Guarda l'etherpads modificate di recente (da notare tag nuovo 'Etherpad' per il codice Etherpad source aperta!)

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

Domanda

Prescript: L'incredibile Etherpad è stato recentemente open source. Scarica qui: http://code.google.com/p/etherpad . Questa è la prima domanda che io sappia su StackOverflow sul codice Etherpad. Se parte della comunità open source Etherpad lo sono, si potrebbe desiderare di iscriversi al feed RSS per le domande con tag 'Etherpad' nel caso in cui questo fermi sulla!

La mia domanda reale, che presuppone che si è Etherpad installato sul proprio server:

Per prima cosa, ecco una query per visualizzare i rilievi recentemente modificati:

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

In alternativa, se si desidera eseguire da un prompt di UNIX:

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

Questo è a portata di mano, però lastWriteTime in realtà viene aggiornato ogni volta che qualcuno così tanto come un trampolino di vista nel proprio browser. Preferirei ordinare le pastiglie di quando erano in realtà la scorsa editati. C'è probabilmente una query SQL di fantasia che coinvolge un join con un altro tavolo che avrebbe mostrato effettiva ultima volta di modifica. Qualcuno sa di cosa si tratta? In alternativa, si potrebbe avere uno script che avvisi quando cambia headRev ma che non sembra il modo più pulito per farlo.

È stato utile?

Soluzione

Non ho ancora capito la risposta alla mia domanda iniziale, ma ho scritto uno script che consente di ottenere qualcosa di simile. Il suo scopo principale è quello di esportare le versioni di testo di tutti i miei cuscinetti e memorizzarli sul mio portatile. Come effetto collaterale che mi mostra che i rilievi sono cambiati e mi mostra un diff dall'ultima versione esportata. Essa mostra anche quelli che sono stati appena creati.

In primo luogo, creare il seguente script, padlist.pl, sul server che ospita l'istanza 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;

Quindi eseguire il seguente script, fetchall.pl, sul computer locale. E 'succhierà giù istantanee di tutte le pastiglie e ti dirà quali sono cambiati e che si sono recentemente apparsi.

#!/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;
} }

Per vedere un diff di pad foo dall'ultima volta Presi che:

diff prev/foo.txt foo.txt
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top