Jestem odpowiedzialny za kilka plików Excela i plików schematów SQL. Jak lepiej kontrolować wersję dokumentów w tych plikach?
Muszę znać zmodyfikowaną część (inną część) w tych plikach i zachować wszystkie wersje w celach informacyjnych. Obecnie dodaję znacznik czasu do nazwy pliku, ale okazało się, że jest to nieefektywne.
Czy istnieje sposób lub dobra praktyka na lepszą kontrolę wersji dokumentów?
Nawiasem mówiąc, redaktorzy wysyłają mi pliki pocztą elektroniczną.
git
version-control
ms-office
versioning
Marcus Thornton
źródło
źródło
Odpowiedzi:
Ponieważ oznaczyłeś swoje pytanie tagiem git Zakładam, że pytasz o użycie w tym celu Gita.
Cóż, zrzuty SQL to zwykłe pliki tekstowe, więc śledzenie ich za pomocą Gita ma sens. Po prostu utwórz repozytorium i przechowuj je w nim. Kiedy otrzymasz nową wersję pliku, po prostu nadpisz go i zatwierdź, a Git wykona wszystko za Ciebie, a Ty będziesz mógł zobaczyć daty modyfikacji, pobrać określone wersje tego pliku i porównać różne wersje.
To samo dotyczy sytuacji,
.xlsx
gdy je zdekompresujesz..xlsx
pliki są spakowanymi katalogami plików XML (zobacz Jak poprawnie złożyć poprawny plik xlsx z jego wewnętrznych podkomponentów? ). Git będzie traktował je jako pliki binarne, chyba że zostaną zdekompresowane. Możliwe jest rozpakowanie.xlsx
i śledzenie zmian w poszczególnych plikach XML w archiwum.Możesz to również zrobić z
.xls
plikami, ale problem polega na tym, że.xls
format jest binarny, więc nie możesz uzyskać z niego znaczących różnic. Ale nadal będziesz mógł zobaczyć historię modyfikacji i sprawdzić konkretne wersje.źródło
.xlsx
to XML, więc powinno działać dobrze. Ogólnie rzecz biorąc, nie ma możliwości łatwego porównania dwóch.xls
plików. Prawdopodobnie mógłbyś dodać hak przed zatwierdzeniem, który umieści.csv
obok niego i będziesz w stanie je odróżnić.Odpowiedź, którą tutaj napisałem , można zastosować w tym przypadku. Narzędzie o nazwie xls2txt może zapewnić czytelne dla człowieka dane wyjściowe z plików .xls. Krótko mówiąc, powinieneś umieścić to w swoim pliku .gitattributes:
A w .git / config:
Oczywiście, jestem pewien, że można znaleźć podobne narzędzia również do innych typów plików, co
git diff
jest bardzo przydatnym narzędziem do dokumentów biurowych. Oto, co mam obecnie w moim globalnym .gitconfig:Książka Pro Git zawiera dobry rozdział na ten temat: 8.2 Dostosowywanie Git - Atrybuty Git
źródło
Od kilku dni zmagam się z tym problemem i napisałem małe narzędzie .NET do wyodrębniania i normalizowania plików Excela w taki sposób, że są one znacznie łatwiejsze do przechowywania w kontroli źródła. Tutaj opublikowałem plik wykonywalny:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
.. a źródło tutaj:
https://bitbucket.org/htilabs/ooxmlunpack
Jeśli jest jakieś zainteresowanie, z przyjemnością uczynię to bardziej konfigurowalnym, ale w tej chwili powinieneś umieścić plik wykonywalny w folderze (np. W katalogu głównym repozytorium źródłowego), a kiedy go uruchomisz, będzie:
Oczywiście nie wszystkie te rzeczy są konieczne, ale efektem końcowym jest plik arkusza kalkulacyjnego, który nadal będzie otwierany w programie Excel, ale który jest znacznie bardziej podatny na różnicowanie i kompresję przyrostową. Przechowywanie również wyodrębnionych plików sprawia, że w historii wersji znacznie bardziej oczywiste jest, jakie zmiany zostały zastosowane w każdej wersji.
Jeśli jest jakiś apetyt, cieszę się, że mogę uczynić narzędzie bardziej konfigurowalnym, ponieważ myślę, że nie każdy będzie chciał wyodrębnić zawartość lub być może wartości usunięte z komórek formuł, ale obie te opcje są dla mnie bardzo przydatne w tej chwili.
W testach arkusz kalkulacyjny o wielkości 2 MB `` rozpakowuje się '' do 21 MB, ale potem byłem w stanie zapisać pięć wersji z małymi zmianami między nimi, w pliku danych Mercurial o wielkości 1,9 MB i wizualizować różnice między wersjami skutecznie przy użyciu Beyond Compare w tryb tekstowy.
NB: chociaż używam Mercurial, przeczytałem to pytanie podczas badania mojego rozwiązania i nie ma nic specyficznego dla Mercurial w tym rozwiązaniu, powinno działać dobrze dla Git lub innego VCS.
źródło
Tante polecił bardzo proste podejście do zarządzania formatami plików opartymi na ZIP w Git :
źródło
Użyj rozszerzenia otwartego dokumentu
.fods
. Jest to zwykły, nieskompresowany format znaczników XML, który można otwierać zarówno w programie Excel, jak i LibreOffice, a różnice będą dobrze wyglądać.źródło
Stworzyliśmy rozszerzenie wiersza poleceń Git o otwartym kodzie źródłowym dla skoroszytów programu Excel: https://www.xltrail.com/git-xltrail .
Krótko mówiąc, główną funkcją jest to, że
git diff
działa on na dowolnych formatach plików skoroszytów, dzięki czemu pokazuje różnice w zawartości VBA skoroszytu (w pewnym momencie wykonamy to również dla zawartości arkuszy).To wciąż wczesne dni, ale może to pomóc.
źródło
Jak wspomniano w komentarzu innej odpowiedzi, pliki .xlsx to po prostu XML.
Aby dostać się do katalogu XML (który jest
git
-able), musisz "rozpakować" plik .xlsx do katalogu. Szybkim sposobem na zobaczenie tego w systemie Windows jest zmiana nazwy pliku <nazwa pliku> .xlsx na <nazwa pliku> .zip, a zobaczysz zawartość wewnętrzną. Przechowałbym to razem z plikiem binarnym, aby przy kasie nie trzeba było wykonywać innych czynności, aby otworzyć dokument w programie Excel.źródło
To narzędzie Excel działa bardzo dobrze dla mnie:
Kontrola wersji dla programu Excel
Jest to dość proste narzędzie do wersjonowania skoroszytów i makr VBA. Po zatwierdzeniu wersji jest ona zapisywana w repozytorium Git na komputerze. Nigdy nie próbowałem tego ponownie. Pliki schematów SQL, ale jestem pewien, że jest na to sposób.
źródło
xltrail
jest dużo łatwiejsze niż to.Moje podejście do plików Excela jest podobne do Jona, ale zamiast pracować z surowymi danymi tekstowymi Excela, eksportuję do bardziej przyjaznych formatów.
Oto narzędzie, którego używam: https://github.com/stenci/ExcelToGit/tree/master
Wystarczy pobrać plik .xlsm (kliknij łącze Wyświetl Raw na tej stronie ). Nie zapomnij sprawdzić ustawienia programu Excel zgodnie z opisem w pliku Readme. Możesz także dodać kod, aby wyeksportować dane SQL do plików tekstowych.
Skoroszyt jest zarówno konwerterem z binarnego Excela do plików tekstowych, jak i programem uruchamiającym narzędzia Windows Git i może być używany także z projektami nie związanymi z Excelem.
Moja wersja robocza jest skonfigurowana z dziesiątkami skoroszytów programu Excel. Używam tego pliku również do otwierania Git-gui dla projektów innych niż Excel, po prostu ręcznie dodając folder git.
źródło