2010-07-20 9 views
39

Est-ce que quelqu'un a rencontré un plugin Git ou Hg pour des différences/fusion/branchement "significatives" de fichiers de mots OpenOffice ou Microsoft. Je sais que je peux 'vérifier' les fichiers .doc mais Git et Hg les traitent comme des blobs binaires. Je voudrais être capable de faire tout (ou au moins plusieurs) des opérations normales de révision sur le texte du fichier.Plugin Git (ou Hg) pour gérer les fichiers Microsoft Word et/ou OpenOffice

Et oui, je sais que je devrais utiliser Latex ou convertir des fichiers de va-et-vient entre RTF. Je suis à la recherche d'une solution plus "native" puisque j'essaie de gérer la collaboration entre les techniciens et les "managers".

Ceci est lié à ma question sur Biostar ici: http://biostar.stackexchange.com/questions/1749/writing-collaboration-with-source-control-and-microsoft-word

Merci.

+3

Pas une réponse: Utilisez un wiki. Si vous avez besoin de la version, il/porter autour, pour trouver un git/hg wiki activé avec un serveur web (les technophiles peuvent utiliser les fichiers wiki/une copie locale, les gars de gestion utilisent l'interface Web normale) la gestion – ZeissS

+16

refuse d'utiliser autre chose que Microsoft Mot. Google-Docs était presque une possibilité, mais ils ont été découragés par l'idée que quelqu'un d'autre voit leurs manuscrits. Je ne leur dis que pendant le processus e-mail plus de 20 ordinateurs « voir » leurs manuscrits trop de peur d'être revenu à un système de papier;) – JudoWill

+0

Vous devriez probablement leur dire. Ou comment google docs ou un wiki correctement configuré est plus sûr que de renvoyer des e-mails non cryptés partout. Au mieux, ils vous écouteront et vous permettront d'améliorer les choses. Au pire, vous serez toujours coincé avec le même problème. – majinnaibu

Répondre

1

Les cabinets d'avocats ont des systèmes extrêmement robustes pour ce faire. Celui qui ne fait pas confiance à l'historique des révisions dans le document (parce qu'il est d'origine externe) et fait plutôt ses propres comparaisons et peut fournir des deltas. Si c'est ce dont ils ont vraiment besoin, vous feriez mieux d'acheter cela que de mettre un emballage dans git ou mercurial qui ne sera jamais vraiment utilisable pour eux.

Désolé de paraître pessimiste, mais il est plus probable que les techniciens utilisent (en grognant) l'outil commercial trop cher que les employés de bureau utilisent git ou mercurial à tout niveau de satisfaction.

+9

Je ne les attends pas à utiliser git ou hg ... Je les attends à utiliser Word (ou quelque chose comme ça) et j'espérais d'utiliser le plug-in pour faciliter la fusion. Je suis dans une institution académique, donc je doute que je serais en mesure de me permettre une solution personnalisée. Par curiosité, avez-vous des noms ou des liens avec les systèmes du «cabinet d'avocats»? – JudoWill

1

En utilisant svn (pas git ou hg, mais vous pourriez avoir une passerelle), il existe une extension pour Ooo travaillant sur des fichiers XML non compressés, voir my answer à propos d'une question similaire. BTW, si jamais vous regardez le code du plugin et le rendre hg-aware au lieu de svn, s'il vous plaît faites le moi savoir! ;-)

9

Que diriez-vous:

  1. Enregistrez vos documents Word en XML.
  2. Validez vos fichiers XML Word.
  3. Diff à l'aide d'un outil de comparaison XML externe. Par exemple:

    $ git difftool -t xmldiff c3d293 498571

Transformer les fichiers XML d'avoir un élément par ligne devrait faire fonctionner le processus de l'enregistrement efficace et aussi permettre à l'outil de diff XML externe pour traiter rapidement.

Références:

8

Si vous êtes sur MS Windows, utilisez TortoiseGit. J'ai juste dû passer par cette expérience douloureuse, et TGit, bien qu'inélégant enlève une partie de la douleur. Quelques autres points:

  • diff Étonnamment git et gitk les deux font un assez bon travail d'au moins visualiser diffs entre.docx (pas sûr de .doc, mais je suppose que c'est pareil). C'est bon pour juste un balayage rapide des diffs lors des commits.
  • Vous êtes complètement hors de la chance aussi loin que l'avance rapide et est merger automatiquement concerné. Malheureusement, je n'ai pas trouvé d'outil capable de gérer cela (bien que j'aime l'idée de xml ci-dessus), donc vous devrez faire toutes les fusions manuellement.
  • Microsoft Word (MS Word) a une vie décente, si viciée, outil de fusion. Autant que je sache, il ne peut le faire se confond 2 voies (i.e. .:X0 + dX = X1), et non à 3 voies ou 2-parent se confond, qui sont plus fréquentes dans le contrôle de version (i.e. .:X0 + dX1 + dX2 = X1). Vous pouvez résoudre les conflits de fusion à l'aide de cet outil, mais il y aurait un travail sur le terrain droit - vérifier chaque branche, l'exportation HEAD comme une version non suivi, etc.

    X0 = *.BASE.docx, 
    X0 + dX1 = *.LOCAL.docx and 
    X0 + dX2 = *.REMOTE.docx 
    
  • Heureusement c'est exactement ce TGIT (et TSVN aussi) fais. Je malheureusement, éviter rebase car si vous devez rejouer plusieurs changements de suite, il peut être très fatigant, mais merge pour de courts documents est très bien, pas génial.

9

Un truc sympa j'ai pu trouver qui fonctionne aussi sur les fichiers Open Office, PPT, etc .:

http://xcafebabe.blogspot.hu/2012/09/sexy-comparison-of-word-documents-with.html

Voici une capture d'écran qui montre le résultat:

enter image description here

+1

+1 pour la capture d'écran. C'est exactement ce que TGit fait! Ce dont je parlais dans [mon commentaire ci-dessus] (http: // stackoverflow.com/a/12312078/1020470), mais il vous suffit de créer un nouveau outil diff/merge si vous voulez pouvoir l'appeler directement depuis git ou si vous n'avez pas tortoiseXXX. Que font les mac-folk? Si vous avez TGit, alors utilisez simplement les extensions de votre explorateur pour diff, merge etc. Notez que si vous utilisez git merge/rebase, il échouera quand même, et vous devrez toujours fusionner les docs manuellement, ce qui était une sorte de objectif original. Toujours à la recherche. NB xml ne fonctionnait pas. –

+0

Cool, merci pour la clarification! En fait, je voulais juste installer TGit :-) – rlegendi

+1

IMO c'est la meilleure réponse - l'article de blog lié vous permet d'utiliser le script différant mot de TGit sans avoir besoin d'installer TGit (qui interfère avec git de Cygwin en installant msysgit) – Rich

3

Répondre à la question de JudoWill - Workshare est probablement l'outil principal utilisé par les avocats.

2

I instructions compilées pour plusieurs endroits ici: http://bit.ly/17LaxVY

# download docx2txt by Sandeep Kumar 
wget -O docx2txt.pl http://www.cs.indiana.edu/~kinzler/home/binp/docx2txt 

# make a wrapper 
echo '#!/bin/bash 
docx2txt.pl $1 -' > docx2txt 
chmod +x docx2txt 

# make sure docx2txt.pl and docx2txt are your current PATH. Here's a guide 
http://shapeshed.com/using_custom_shell_scripts_on_osx_or_linux/ 
mv docx2txt docx2txt.pl ~/bin/ 

# set .gitattributes (unfortunately I don't this can't be set by default, you have to create it for every project) 
echo "*.docx diff=word" > .git/info/attributes 

# add the following to ~/.gitconfig 
[diff "word"] 
    binary = true 
    textconv = docx2txt 

# add a new alias 
[alias] 
    wdiff = diff --color-words 

# try it 
git init 

# create my_file.docx, add some content 

git add my_file.docx 

git ci -m "Initial commit" 

# change something in my_file.docx 

git wdiff my_file.docx 

# awesome! 

Il fonctionne très bien sur Mac OS X

+0

Est-ce que cette poignée peut revenir? – neuronet

1

Git 1.6.1 ou plus tard, vient maintenant avec les textconv fonctionnalités, qui permet d'utiliser une commande arbitraire pour convertir un fichier au texte avant de différer.

cochez également cette case: https://gist.github.com/17twenty/4985374