Jesteśmy doradcą w zakresie oprogramowania z wieloma projektami dla różnych klientów. Tradycyjnie używamy Subversion, ale obecnie rozważamy przejście na Git.
Znaczna część tworzonych przez nas dokumentów jest udostępniana naszym klientom (wymagania, projekty globalne, specyfikacje testów itp.), A do ich tworzenia używamy MS Office. W Subversion możemy użyć jego funkcji „Blokuj”, aby upewnić się, że nikt nie edytuje tego samego dokumentu w tym samym czasie. W Git nie możesz tego zrobić, ponieważ ze względu na swoją rozproszoną naturę git nie ma blokad.
Zamki to tak naprawdę niewiele więcej niż mechanizm komunikacji, ale są bardzo skuteczne.
Obecnie nasz kod i dokumenty skierowane do klientów zazwyczaj znajdują się w różnych podfolderach innego repozytorium svn. Co robisz, gdy przechodzimy do git? Widzę zestaw opcji:
Przenosimy repozytoria svn do git 1 na 1. Zamiast używać blokad na plikach Office, robimy to, co sugerują git ludzie i próbujemy w jakiś sposób zmienić nasz przepływ pracy, aby to naprawić. Może to działać w gałęzi przy dowolnej edycji dokumentu i scalać ją w trakcie przeglądu. To podejście rozbija np. Arkusze Excela, które zawierają informacje o zarządzaniu projektem; są łatwo edytowane przez członków zespołu (i zachęcamy do tego), ale nie podlegają formalnej procedurze weryfikacji
Używamy git dla kodu i svn dla dokumentów i zarządzania projektami. Ma to tę wadę, że niektóre inne dokumenty projektowe nie będą „w pobliżu” określonego przez nie kodu, co zwiększa szansę, że ludzie zapomną je zaktualizować. Ponadto każdy musi korzystać i rozumieć dwa zestawy narzędzi. To powiedziawszy, być może jest to świetna okazja, aby przejść do tekstowych narzędzi dokumentacyjnych (lateks, markdown, HTML itp.) Dla dokumentów projektowych, które nie są skierowane do klientów.
Np. 1, ale hakujemy
git lock
polecenie, które robi dla nas to, co robi dla nas svn lock (odpowiednio przełączamy flagę „tylko do odczytu” i synchronizujemy z serwerem za pomocą niektórych środków).
Nie kupuję argumentu, że blokady nie działają w DVCS, ponieważ system powinien nawet działać, gdy jesteś całkowicie offline. Blokady Svn również mogą zostać zastąpione; są mechanizmem komunikacji . Bez pewnego połączenia sieciowego komputer nie będzie się dużo komunikował.
Nie możemy być jedynym sklepem, który jest bardzo zadowolony z tego, jak svn lock
pasuje do naszego przepływu pracy, prawda?
Wszelkie pomysły lub wskazówki?
Znalazłem /programming/119444/locking-binary-files-using-git-version-control-system, ale dyskusja jest raczej techniczna; Szukam sposobów rozwiązania lub uniknięcia praktycznego problemu dwóch członków zespołu edytujących ten sam plik binarny w tym samym czasie.
Odpowiedzi:
Radzę pozostać przy SVN dla dokumentów MS Office z dwóch powodów:
Jest takie powiedzenie, które mi się podoba, mówi coś takiego: „Gdy trzymasz młot, wszystko wygląda jak gwóźdź”. To, że przechodzisz do Git, aby przechowywać kod, nie oznacza, że powinieneś go używać do przechowywania dokumentów.
źródło
Kontrola wersji kodu nie jest najlepszym narzędziem do pracy na plikach Office, ponieważ są one binarne, a narzędzia te działają na poziomie modyfikacji plików.
Użyj narzędzia do współpracy, takiego jak MediaWiki (bezpłatny) lub Atlassian Confluence (płatny), z którego możesz łatwo wyodrębnić dokument Word. Lub użyj LaTex do wygenerowania plików Office.
Pozwól mi rozwinąć ...
Jeśli musisz współpracować, musisz przyjąć model, który wyróżnia modyfikacje (np. Zmienił słowo, przeformułował lub po prostu zmienił czcionkę) na jednostkę, np. Plik.
SVN i Git, nawet jeśli myślą o kodzie, są narzędziami niskiego poziomu, które porównują swoje pliki według zawartości tekstowej. Problem polega jednak na tym, że mogą pracować tylko na plikach tekstowych, ponieważ nie dbają o naturę / zawartość pliku, aby wyodrębnić model modyfikacji wysokiego poziomu.
Jasnym przykładem jest plik obrazu . Chociaż TortoiseMerge jest narzędziem, które pomaga użytkownikom SVN poprzez porównywanie obrazów z ich rzeczywistymi modyfikacjami, normalne
VCS
es uruchamiane przez łatki zawartości nad plikami. Pozwól mi wyjaśnić. Narzędzie takie jak TortoiseMerge może powiedzieć, że nowa wersja pliku obrazu jest zmieniana tylko o kilka pikseli lub luminancji, jeśli implementuje bardziej złożoną analizę HSV dwóch plików. Możesz dodać znak wodny lub zmienić poziomy kolorów, narzędzie, które porównuje pliki obrazów , podkreśli różnice, jeśli zastosuje dobry algorytm porównywania. Ale aby sprawdzić nowy plik w kliencie musiprodukować deltę. Delta to zestaw linii, które są usuwane i linii, które są dodawane do pliku. Pliki binarne nie ma podziałów wierszy, jeśli nie zdarzy się mieć\r\n
, lub podobny, ich ładowności, a także w przypadku zmiany delta pojedynczy znak wymieniasz całą linię.Oto problem. Pliki binarne nie nadają się do kontroli wersji, ponieważ możesz prawie zastąpić cały plik dla każdej wersji. Zastanów się, kiedy piszesz pliki Office za pomocą MS Office, a Twój współpracownik edytuje za pomocą OpenOffice. Jeśli implementują nawet nieco inną wersję algorytmu kompresji plików OpenXML, skończysz na zupełnie innych plikach, nawet jeśli zmienisz pojedynczy przecinek w dokumencie.
Oprogramowanie do współpracy renderuje dokumenty wewnętrznie w formacie tekstowym, ponieważ tekst jest naprawdę istotny dla Twojej firmy i może obliczać różnice lub radzić sobie z konfliktami. LaTex lub Markdown, jeśli chcesz, to sposób na przechowywanie dokumentu jako pliku tekstowego z zaawansowanym znacznikiem, więc nie tak jak klasyczny plik TXT, który nie ma kontroli nad czcionkami / formatowaniem.
Ale oczywiście Twoi klienci nie lubią otwierać plików Markdown, prawda? Ok, możesz po prostu, i naprawdę mam na myśli, po prostu użyć dowolnego oprogramowania, którego obecnie jestem zbyt leniwy, aby google, aby przekonwertować dokument źródłowy na PDF, Word lub cokolwiek innego.
Zreasumowanie
Jeśli zaczniesz sprawdzać pliki tekstowe pod kontrolą źródła, masz większą kontrolę nad historią plików i możesz łatwo zarządzać konfliktami, szczególnie bez użycia blokad VCS.
Przed oficjalnym udostępnieniem dokumentu potrzebujesz procedury eksportowania źródłowego dokumentu tekstowego do pliku pakietu Office
Rozdzielenie dwóch kroków sprawia, że ludzie są szczęśliwi kosztem krzywej uczenia się.
źródło
Możesz użyć git do tych dokumentów bez dodawania blokady. Wybierz przepływ pracy git, który blokuje wypychanie do gałęzi master, jeśli nie jest to master. (Istnieje kilka przepływów pracy do wyboru.) Zapobiegnie to wzajemnemu nadpisywaniu przez siebie modyfikacji plików dokumentów binarnych. Załóżmy, że dwie osoby modyfikują ten sam dokument binarny. Pierwszy, który wypycha go do master, wprowadza zmiany. Drugi zostanie zablokowany, ponieważ ich kopia znajduje się za gałęzią master. Najpierw muszą się zsynchronizować. Druga osoba synchronizuje się. Pokaże konflikt scalania dokumentu binarnego. Ta osoba gdzieś zapisuje swoją wersję i rozwiązuje konflikt, pobierając wersję z mastera (która została wypchnięta przez pierwszą osobę). W tym momencie pliki drugiej osoby są aktualne w oddziale głównym. Łączą zmiany w najnowszym dokumencie binarnym (ręcznie), który następnie będzie zawierał zarówno zmiany pierwszej osoby, jak i drugiej osoby. Następnie nowa wersja jest przekazywana do master i staje się nową gałęzią master. Łączenie się jest bólem, ale dzieje się to tylko w przypadku konfliktu. Ponadto zmiany nie gubią się ani nie są nadpisywane. Konflikty są wykrywane, a użytkownicy mogą je rozwiązać w czysty sposób.
źródło
Połącz pierwsze 2 rozwiązania, a nie potrzebujesz trzeciego.
Jeśli zapiszesz arkusze kalkulacyjne na dysku jako pliki CSV, program Excel nadal je edytuje, a następnie git z przyjemnością je scali.
Podobnie możesz otwierać, edytować i zapisywać pliki w programie Word, jeśli są one w formacie HTML lub (niech Bóg nam pomoże) RTF. Słowo oczywiście doda więcej wzdęć niż przydatnego tekstu, ale nadal jest to tylko tekst, który git chętnie się z tobą połączy.
To prawda, że te rozwiązania zakładają, że nie korzystasz lub możesz odejść od funkcji specyficznych dla MS, co jest naprawdę tylko problemem po stronie Excela.
O ile oczywiście nie musisz instalować programu Word w systemie, aby móc czytać dokumentację, co samo w sobie jest przerażającą perspektywą ...
źródło