2010-07-21 47 views
27

Ostatnio bawiłem się z git i hg, a potem nagle przyszło mi do głowy, że tego typu rzeczy będą świetne dla dokumentów.Kontrola wersji dla DOCX i PDF?

Mam dokument, który edytuję w DOCX i eksportuję jako PDF. Próbowałem użyć zarówno git, jak i hg do sterowania wersją i okazało się, że z hg skończy się śledzenie tylko binarne i różnicowanie nie ma znaczenia. Chociaż z git mogę znacząco diff DOCX (jeszcze nie próbowałem na PDF) zastanawiałem się, czy jest lepszy sposób to zrobić niż robię to teraz. (Najlepiej, nie opuszczając Word diff będzie najlepszym rozwiązaniem.)

- Ashish Gandhi

Odpowiedz

13

Istnieją dwie różne koncepcje tutaj - to „może system kontroli wersji dokonać pewnych sądów o inteligentnych zawartość plików? " - aby mógł on przechowywać tylko informacje o delcie między wersjami (i wykonywać takie czynności, jak przypisywanie odpowiedzialności do poszczególnych części pliku).

Drugi to "czy mam narzędzie do porównywania plików, które jest przydatne dla typów plików, które mam w systemie kontroli wersji". Systemy kontroli wersji zwykle zawierają narzędzia do porównywania plików, które są gorsze od dedykowanych alternatyw. Ale mogą one zawsze być połączone z lepszymi programami diff - albo dla wszystkich typów plików, albo dla konkretnych.

Często stosuje się np. Beyond Compare jako ogólne narzędzie do porównywania, z programem Word jako dedykowanym narzędziem porównywania dokumentów programu Word.

Różne systemy kontroli wersji różnią się tym, jak dobrze ludzie postrzegają je jako obsługujące "pliki binarne", ale często ma to związek z obsługą dużych plików i zapewnieniem wyłącznego blokowania, tak jak ma to miejsce w przypadku porównywania plików.

+0

Tak, zdaję sobie sprawę z dyskusyjnych możliwości "binarnych". Więc co byś zasugerował - jak powinieneś zapisywać historię swoich DOCX-ów? –

+1

Umieściłbym je w każdym rodzaju VCS i skonfigurowałem, żeby VCS używał Worda do porównywania plików DOCX. –

+0

Jak skonfigurować TortoiseHg, aby zrobić to automatycznie po dwukrotnym kliknięciu starej wersji DOCX? –

4

Możesz użyć Beyond Compare jako zewnętrznego narzędzia diff dla hg. Dodaj do/zmienić mercurial.ini użytkownika jako:

[extdiff] 
cmd.vdiff = c:/path/to/BCompare.exe 

Następnie dostać Beyond Compare file viewer rule dla docx.

Teraz powinieneś być w stanie porównać dwie wersje docx w Beyond Compare.

3

Tylko dla docx, mam skompilowane instrukcje wielu miejscach tutaj: https://gist.github.com/nachocab/6429893

# 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 commit -m "Initial commit" 

# change something in my_file.docx 

git wdiff my_file.docx 

# awesome! 

Działa świetnie na OSX

2

Jeśli zdarzy ci się korzystać z komputera Mac, napisałem git scalić sterownik, który może wykorzystać Microsoft Word i śledzone zmiany, aby scalić i pokazać konflikty między dowolnymi typami plików Word może przeczytać & pisać.

http://github.com/jasmas/wordMerge

mówię „jeśli zdarzy ci się korzystać z komputera Mac”, ponieważ kierowca pisałem używa AppleScript, przede wszystkim w celu wykonania tego zadania.

Byłoby miło dodać wersję vbscript do projektu, ale w tej chwili nie mam środowiska Windows do testowania.Każdy, kto ma podstawową wiedzę na temat skryptów, powinien móc zobaczyć, co robię i powielić go w vbscript, powershell lub cokolwiek w systemie Windows.