Viendo el etherpads editados recientemente (nota nueva etiqueta 'Etherpad' para el código Etherpad de código abierto!)

StackOverflow https://stackoverflow.com/questions/2569194

Pregunta

Prescript: El increíble Etherpad fue recientemente código abierto. Consíguelo aquí: http://code.google.com/p/etherpad . Esta es la primera pregunta que yo sepa en StackOverflow sobre el código Etherpad. Si eres parte de la comunidad de código abierto Etherpad, puede que quiera suscribirse a la fuente RSS de preguntas con la etiqueta 'Etherpad' por si acaso esta enganches!

Mi pregunta real, lo que supone que ha instalado Etherpad en su propio servidor:

En primer lugar, he aquí una consulta para ver almohadillas editados recientemente:

SELECT id,lastWriteTime,creationTime,headRev 
  FROM PAD_SQLMETA ORDER BY lastWriteTime, headRev;

O, si desea ejecutarlo desde un indicador de UNIX:

mysql -u root -pPASSWD etherpad -e "select id,lastWriteTime,creationTime,headRev 
  from PAD_SQLMETA order by lastWriteTime, headRev"

Esto es muy útil, sin embargo lastWriteTime realmente se actualiza cada vez que alguien tanto como vistas de una almohadilla en su navegador. Yo prefiero ordenar las pastillas de cuando en realidad estaban editó por última vez. Es probable que haya una consulta SQL de fantasía que implican una unión con otra mesa que mostraría real Tiempo de redacción. ¿Alguien sabe lo que es? Alternativamente, usted podría tener un script que se da cuenta cuando headRev cambios, pero que no parece ser la manera más limpia para hacerlo.

¿Fue útil?

Solución

he descubierto no es la respuesta a mi pregunta original, pero me escribió un guión que logra algo similar. Es objetivo principal de es exportar versiones de texto sin formato de todos mis pastillas y almacenarlos en mi portátil. Como efecto secundario que me muestra los pads han cambiado y me muestra un diff desde la última versión exportada. También muestra cuáles de ellos se crean de nuevo.

En primer lugar, cree el siguiente script, padlist.pl, en el servidor que aloja la instancia Etherpad:

#!/usr/bin/env perl

$list = `mysql -u root -pPASSWD etherpad -e 
         "select id from PAD_SQLMETA order by lastWriteTime DESC, headRev DESC"`;

$list =~ s/^id\s*\n//s;  # get rid of the column header mysql adds.
print $list;

A continuación, ejecute el siguiente script, fetchall.pl, en su máquina local. Se chupan hasta instantáneas de todas las pastillas y le dirá cuáles han cambiado, y que recientemente han aparecido.

#!/usr/bin/env perl

use LWP::Simple qw(get);
$| = 1;  # autoflush.
$server = "server.com"; # the server that hosts your etherpad instance.

$pads = `ssh $server etherpad/padlist.pl`;
@padlist = split(/\s+/, $pads);

$neednewline = 0; # printing "." for each pad where nothing to be done.
for(@padlist) {
  $ep = $_;
  $localfile = "$ep.txt";
  if(-e $localfile) { 
    $localexists = 1; 
    $localcontent = do {local (@ARGV,$/) = $localfile; <>};
  } else { $localexists = 0; }
  $livecontent = get("http://$server/ep/pad/export/$ep/latest?format=txt");
  if($livecontent ne $localcontent) {
    if($neednewline) { print "\n";  $neednewline = 0; }
    if($localexists) { 
      print "CHANGED: $ep\n"; 
      open(F, ">prev/$localfile") or die "Probably need to create 'prev' dir.";
      print F $localcontent;
      close(F);
    } else { print "NEW:     $ep\n"; }
    open(F, ">$localfile") or die;
    print F $livecontent;
    close(F);
  } else {
    print ".";
    $neednewline = 1;
} }

Para ver un diff de foo almohadilla desde la última vez que fui a buscar:

diff prev/foo.txt foo.txt
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top