====== MIW 2009 WIKI SYNC ====== **Zrealizował: [[sebastian@pracuch.pl|Sebastian Pracuch]] (4RI) :!: Develop a synchronization [[http://www.dokuwiki.org/devel:plugins|plugin]] for [[http://www.dokuwiki.org/|Dokuwiki]] for disconnected work, that allows a developer to work and extend a disconected copy of the wiki, and then a back replication, possibly with merging. Tools to consider [[http://www.cis.upenn.edu/~bcpierce/unison/|unison]] [[http://en.wikipedia.org/wiki/Rsync|rsync]] last resort? [[http://en.wikipedia.org/wiki/Concurrent_Versions_System|cvs]] [[http://kdiff3.sourceforge.net/]] [[http://meld.sourceforge.net/]] ====== Prezentacja ====== [[pl:miw:2009:miw09_wiki_sync:prezentacja|Prezentacja wyników projektowych]] ====== Sprawozdanie ====== ==== Cel projektu ==== Celem projektu jest stworzenie pluginu do DokuWiki, który umożliwi synchronizację całego DokuWiki, wybranej przestrzeni nazw lub wybranego pliku. Zadaniem pluginu jest umożliwienie lokalnej pracy z DokuWiki, bez dostępu do internetu. Użytkownik powiniem posiadać możliwość: * pobrania DokuWiki na lokalny komputer, * edycji lokalnej kopii bez dostępu do internetu, * synchronizacji lokalnej kopii z aktualną wersją znajdującą się na serwerze. ==== Opis działania ==== Synchroniazacja odbywa się w następujących krokach: - Wstępne wybranie strony, która zostanie poddana synchronizacji: * przejście na wybraną stronę, * przejście do panelu administacyjnego, * wybranie pluginu odpowiedzialnego za synchronizację. - Sprawdzenie połączenia: * test połączenia z serwerem, * test ścieżki do DokuWiki na serwerze. - Wybranie przestrzeni nazw (pliku), która zostanie poddana synchronizacji: * wyświetlenie drzewa przestrzeni nazw (wstępnie wybrana strona zostaje zaznaczona), * ostateczny wybór przestrzeni nazw (strony), która zostanie zsynchronizowana. - Ponowne sprawdzenie połączenia: * test połączenia z serwerem, * test ścieżki do DokuWiki na serwerze. - Sprawdzenie, czy synchronizacja podanej ścieżki może zostać przeprowadzona. - Synchronizacja wybranej przestrzeni nazw (ścieżki): * wypisanie wszystkich zsynchronizowanych pomyślnie plików, * wypisanie wszystkich plików, których synchronizacja zakończyła się niepowodzeniem (wystąpiły konflikty). - Rozwiązanie wszystkich konfliktów (poniższe czynności są wykonywane dla każdego pliku, dla którego wystąpił konflikt): * zapisanie lokalnego pliku w REV, * zapisanie pliku znajdującego się na serwerze, jako pliku aktualnego na lokalnym komputerze, * porównanie aktualnej wersji pliku (plik z serwera) z poprzednią (plik z lokalnego komputera), * określenie w jaki sposób pliki zostaną połączone. - Ponowne sprawdzenie połączenia: * test połączenia z serwerem, * test ścieżki do DokuWiki na serwerze. - Ostateczne rozwiąznie konfliktów (poniższe czynności są wykonywane dla każdego pliku, dla którego wystąpił konflikt): * połączenie aktualnej wersji pliku z poprzednią, * przegranie pliku na serwer. ==== Ograniczenia ==== Plugin posiada następujące ograniczenia: * nie można synchronizować przestrzeni nazw (strony), która znajduje się w niezsynchronizowanej przestrzeni nazw, * synchronizowana są tylko aktualne wersje stron (katalog dokuwiki/data/pages), nie są synchronizowane żadne inne dane (rewizje, catch, itp.). ==== Pobierz ==== * {{pl:miw:2009:miw09_wiki_sync:sync_20090407.zip|sync-latest}} ==== Instalacja ==== === Instalacja lokalna === - Instalacja: * DokuWiki, * unisona, * expect. - Przekopiowanie pluginu ''sync'' do katalogu z pluginami (''dokuwiki/lib/plugins''). - Wprowadzenie danych dostępowych do serwera w pliku ''dokuwiki/lib/plugins/sync/conf/defult.php'', (użytkownik musi należeć do grupy www-data). - Ustawienie grupy (www-data) oraz praw dostępu do katalogu (770), jeśli katalog nie istnieje należy go stworzyć: * ''dokuwiki/lib/plugins/sync/unison'', * ''dokuwiki/lib/plugins/sync/diff'', * ''/var/www/.ssh''. Użytkownik powinien posiadać dostęp do niektórych plików znajdujących się w powyższych katalogu. Aby mieć pewność, że użytkownik będzie posiadać wymagane prawa dostępu najlepiej usunąć zawartość katalogów (o ile istnieje). === Instalacja na serwerze === - Instalacja unisona (w takiej samej wersji jak na lokalnym komputerze). ====== Spotkania ====== [[pl:miw:2009:miw09_wiki_sync:spotkania|Notatki ze spotkań projektowych]] ====== Projekt ====== [[pl:miw:2009:miw09_wiki_sync:projekt|Dodatkowa dokumentacja projektu]] ====== Materiały ====== ==== Unison ==== * [[http://www.cis.upenn.edu/~bcpierce/unison/]] ==== DokuWiki ==== * [[http://www.dokuwiki.org/devel:admin_plugins]] * [[http://www.dokuwiki.org/devel:admin_plugin_skeleton]]