Sp��cification Wikitty publication module de synchronisation ============================================================ :Authors: Mano��l Fortun D��finitions ------------ Objets wikitty <-> Fichier ++++++++++++++++++++++++++++ Un fichier est d��fini par un nom, une extention, un contenu et un chemin. dans wikitty publication les fichiers sont convertis en fonction de leurs type en objet wikitty. les fichiers sources sont convertit en WikittyPubText et les fichiers binaires(eg image, etc) en WikittyPubData. Les deux types d'objet ont les m��mes attribut: - Name: correspondant au nom du fichier - MimeType: crrespondant au type, qui donnera l'extension - Content: le contenu binaire pour pour les PubData et textuel pour les PubText Le mimetype donne l'extention par exemple pour un PubData si on a en mimetype "image/png" alors l'extension du fichier associ�� sera ".png". Dans le cas d'un PubText le mimetype donnera l'extension et le langage de la source par exemple si on a en mimetype "application/javascript" le langage est javascript et l'extension sera donc ".js". A ces objets wikitty on associe un wikittyLabel, c'est un objet qui peut contenir un ensemble de label diff��rent, un label par exemple "src.org.chorem.entities" sert ici pour contenir le chemin menant au fichier sur le file system. Un wikitty peut avoir un certain nombre de label, pour les wikittyPub cel�� indiquera qu'ils appartiennent �� plusieurs arborescence. Propri��t��s +++++++++++ WikittyService cible ********************** L'adresse du wikitty service aupr��s duquel notre espace de travail(ensemble des fichiers provenant d'un wikitty service) est li�� sera stock�� �� la racine du dis espace de travail(premier dossier), dans un dossier cach�� ".wp\". Cette adresse sera dans un fichier de propri��t�� tr��s certainement. Fichier de propri��t��: wikitty.service= http://www.adresse.com:8080 Versions des wikitty et labels ******************************** Tout objet wikitty dispose d'une version qui est modifier par le wikitty service �� chaque modification de l'objet wikitty, les wikittypub donc aussi. Cette information de la version sera stock�� dans un fichier de propri��t�� dans le dossier cach�� ".wp/" afin que l'on garde tr��ce des versions des objets que l'on aura transform�� en fichier, cel�� pour mieux g��rer les commit et update. Syst��me de cl��/valeur avec en cl�� le nom du fichier, et en valeur sa version On conservera trace ausi dans ce m��me fichier de propri��t�� sous labels direct du label courant, cel�� permettra de pouvoir comparer les diff��rences entre ce qui existe sur le file system et les objets pr��sents dans le wikitty service, et donc de voir les suppressions et cr��ations Exemple pour un contenu de file system: +racine |script.js |scripttut.js |image.png |+directory2 ||script3.js ||+directory3 |||truc.js |+directory22 ||machin.png Fichier de propri��t��s correspondant: script=num��roVersion scripttut=num��roVersion image=num��roVersion label= racine.directory2, racine.directory22 Fonctionnalit��s ---------------- Import ++++++++ D��finitions ************ La fonctionnalit�� import doit permettre d'importer aupr��s d'un wikitty service un dossier, r��curssivement ou non. Si on choisi r��cursivement alors tout les sous dossier du dossier cible seront trait��, sinon seulement les fichiers contenu dans le dossier cible. Les fichiers sources seront transform�� en wikittyPubText et les binaires en WikittyPubData Prototype commande et exemples ******************************** ''wp import [--recursion (true|false)] [url du WikittyService] [directory]'' Exemple pour le contenu un file system: +racine |script.js |scripttut.js |image.png |+directory2 ||script3.js Si on lance la commande "import --recursion true http:// racine" alors tout le contenu sera envoy�� et convertit en wikitty. Si on lance la commande "import --recursion false http:// racine" alors seulement racine, script.js, scripttut.js et image.png seront envoy��s et convertis en wikitty. CheckOut +++++++++ D��finitions ************ La fonctionnalit�� checkout permet de r��cup��rer l'ensemble des wikittyPub qui poss��dent un label donn��, et de l'option de r��cursion sur le label. La r��cup��ration passe par la conversion de ses objets en fichier sur le disque local �� l'endroit indiqu��. L'option de r��cursion permet de r��cup��rer les sous labels d'un label par exemple le label: "org.chorem.entities" est un sous label de "org.chorem". Le checkout ��crit aussi des fichiers de propri��t�� cach�� permettant le bon fonctionnement des autres fonctions. Prototype commande et exemples ******************************** ''wp checkout [--recursion (true|false)] [url du WikittyService] [Label �� extraire] [directory local d'accueil]'' Si on lance la commande "checkout --recursion true http:// org racine" on r��cp��rera tout les ��l��ments dont un des labels commence par org et on les placera dans le dossier racine, et sous le dossier "org" on trouvera cach�� le fichier de propri��t�� donnant l'adresse du wikitty service. Si on lance la commande "checkout --recursion false http:// org racine" on r��cp��rera tout les ��l��ments dont un des labels est org et on les placera dans le dossier racine, et sous le dossier "org" on trouvera cach�� le fichier de propri��t�� donnant l'adresse du wikitty service. Relocate +++++++++ D��finitions ************ La fonctionnalit��s relocate permet de changer le wikitty service cible d'un espace de travail ce qui signifie que l'on va modifier le fichier de propri��t�� cach�� �� la racine de notre espace de travail qui contient l'adresse du wikitty avec lequel on travail, l'adresse par d��faut des commandes update, delete et commit. La devra s'effectuer dans le dossier p��re de l'espace de travail. Prototype commande ******************* ''wp relocate [nouvelle url du WikittyService par defaut] [directory a relocaliser]'' Commit +++++++ D��finitions ************ La fonctionnalit�� commit permet d'envoyer l'espace de travail ou une partie de cet espace, que l'on a pr��c��dement checkout depuis un wikitty service, au wikitty service enregistr�� dans le fichier de propri��t��, ou bien de l'envoyer �� un wikitty service dont on a explicitement donn�� l'adresse en ligne de commande. Un commit peut avoir lieu que si la version local des fichiers est sup��rieurs ou ��gale �� celle enregistr�� aupr��s du wikitty service. On envois tout ce qui est contenu dans l'espace de travail, avec les fichiers de propri��t�� cach�� on peut obtenir la liste des nouveaux ��l��ments, pour les ��l��ments manquant ils ne sont pas pris en compte, la fonction delete est pr��vu �� cet effet. Le commit peut ��tre r��curssif, le fonctionnent de l'option r��cursif est le m��me que pour les fonctionnalit��s pr��c��dente. Si on commit depuis un sous dossier de l'espace de travail, l'adresse sera automatiquement retrouv�� en fouillant les fichiers de propri��t��s cach�� dans les dossiers parents. Prototype commande et exemples ******************************* ''wp commit [--recursion (true|false)] [--ws (url du WikittyService)] [r��pertoire �� pousser]'' L'option "ws" permet de donner explicitement un wikitty service pour le commit, par d��faut on cherchera le fichier de propri��t�� contenant l'adresse du wikitty service. Delete ++++++++ D��finitions ************ La fonctionnalit�� delete permet de supprimer un fichier ou dossier de l'espace de travail et de le supprimer dans le wikitty service associ��, ou le wikitty service explicitement donn��. Dans le cas d'une suppression de dossier, cel�� supprime le label, donc enl��ve le label li�� au wikittyPub, si ces wikittyPub se retrouve sans label on peut les supprimer du service. Dans le cas d'un fichier on supprime le label du wikittyPub, si celui ci se retrouve sans label on peut le supprimer du wkittyservice. Dans les deux cas on supprime localement fichier ou dossier de la cible de la commande, dans les fichiers de propri��t��s aussi. Prototype commande ******************* ''wp delete [--ws (url du WikittyService)] [r��pertoire ou fichier �� supprimer]'' L'option "ws" permet de donner explicitement un wikitty service pour le delete, par d��faut on cherchera le fichier de propri��t�� contenant l'adresse du wikitty service. Update ++++++++ D��finitions ************ La fonctionnalit�� update permet de mettre �� jour l'espace de travail ou une partie de cet espace, que l'on a pr��c��dement checkout depuis un wikitty service, au wikitty service enregistr�� dans le fichier de propri��t��, ou bien de l'envoyer �� un wikitty service dont on a explicitement donn�� l'adresse en ligne de commande. Un update permet de mettre �� jour ses fichiers locaux pour faire cette op��ration on va comparer les versions locales et les versions du serveur. L'update permet de supprimer les fichiers qui ont ��t�� supprim�� sur le wikitty service, on remplace les fichiers qui n'existent plus localement mais qui existe toujours sur le serveur. Si il y a une diff��rence de version entre les fichiers locaux et distant, pour les fichier binaire on ��crase la version locale par la version distante, pour les sources on ��crit dans le fichier les diff��rences entre local et distant �� l'utilisateur de faire le merge par la suite. L'update peut ��tre r��curssif, le fonctionnent de l'option r��cursif est le m��me que pour les fonctionnalit��s pr��c��dente. Si on update depuis un sous dossier de l'espace de travail, l'adresse sera automatiquement retrouv�� en fouillant les fichiers de propri��t��s cach�� dans les dossiers parents. Prototype commande ******************* ''wp update [--recursion (true|false)] [--ws (url du WikittyService)] [r��pertoire �� mettre �� jour]'' L'option "ws" permet de donner explicitement un wikitty service pour le delete, par d��faut on cherchera le fichier de propri��t�� contenant l'adresse du wikitty service.