Voir le etherpads (note nouvelle balise 'EtherPad' pour le code EtherPad sourced ouvert!) A récemment édité
-
24-09-2019 - |
Question
Prescript: L'incroyable EtherPad a récemment ouvert le code source. Obtenez ici: http://code.google.com/p/etherpad . Ceci est la première question que je connaisse sur StackOverflow sur le code EtherPad. Si vous faites partie de la communauté open source EtherPad, vous pouvez vous abonner à href="https://stackoverflow.com/feeds/tag?tagnames=etherpad"> juste au cas où cela sur les captures!
Ma question réelle, ce qui suppose que vous avez installé EtherPad sur votre propre serveur:
Tout d'abord, voici une requête pour afficher pads récemment modifiés:
SELECT id,lastWriteTime,creationTime,headRev
FROM PAD_SQLMETA ORDER BY lastWriteTime, headRev;
Ou, si vous voulez l'exécuter à partir d'une invite unix:
mysql -u root -pPASSWD etherpad -e "select id,lastWriteTime,creationTime,headRev
from PAD_SQLMETA order by lastWriteTime, headRev"
C'est à portée de main, mais en fait lastWriteTime
est mise à jour chaque fois que quelqu'un tant que des vues d'un pad dans leur navigateur. Je préfère trier les pads de quand ils étaient en fait la dernière fois éditée. Il y a probablement une fantaisie requête SQL impliquant une jointure avec une autre table qui montrerait la dernière fois d'édition réelle. Est-ce que quelqu'un sait ce qui est? Sinon, vous pouvez avoir un script qui remarque en cas de changement de headRev, mais cela ne semble pas la plus propre façon de le faire.
La solution
Je n'ai pas tout à fait compris la réponse à ma question initiale, mais j'ai écrit un script qui réalise quelque chose de similaire. Son but principal est d'exporter des versions en texte clair de tous mes tampons et de les stocker sur mon ordinateur portable. Comme un effet secondaire, il me montre que des tampons ont changé et me laisse voir une diff depuis la dernière version exportée. Elle montre aussi que les nouveaux ont été créés.
Tout d'abord, créez le script suivant, padlist.pl
, sur le serveur qui héberge votre instance 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;
Ensuite, exécutez le script suivant, fetchall.pl
, sur votre machine locale.
Il va sucer vers le bas des instantanés de tous vos pads et vous dire quels sont ceux qui ont changé et qui ont récemment apparu.
#!/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;
} }
Pour voir une diff de pad foo depuis la dernière fois que j'allai le chercher:
diff prev/foo.txt foo.txt