Pierwszym krokiem do skutecznego zarządzania przepływem pracy git + lateks jest wprowadzenie kilku zmian w nawykach LaTeX.
Na początek napisz każde zdanie w osobnej linii . Git został napisany w kodzie źródłowym kontroli wersji, gdzie każda linia jest odrębna i ma określony cel. Pisząc dokumenty w LaTeX, często myślisz w kategoriach akapitów i piszesz je jako swobodny dokument. Jednak w git zmiany jednego słowa w akapicie są rejestrowane jako zmiany całego akapitu.
Jednym z rozwiązań jest użycie git diff --color-words
( zobacz moją odpowiedź na podobne pytanie, na której pokazuję przykład). Muszę jednak podkreślić, że podział na osobne linie jest znacznie lepszą opcją (wspomniałem o tym tylko w tej odpowiedzi), ponieważ odkryłem, że powoduje to bardzo minimalne konflikty scalania.
Jeśli chcesz spojrzeć na różnicę kodu, użyj natywnego mechanizmu różnicowego git. Aby zobaczyć różnicę między dwoma dowolnymi zatwierdzeniami (wersjami), możesz to zrobić za pomocą sha
s każdego z zatwierdzeń. Zobacz dokumentację, aby uzyskać więcej szczegółów, a także to pytanie
Z drugiej strony, jeśli chcesz spojrzeć na różnicę sformatowanego wyjścia , skorzystaj latexdiff
z doskonałego narzędzia (napisanego w perlu), które pobiera dwa pliki lateksu i tworzy schludne zróżnicowane wyjście w formacie pdf, takie jak to ( źródło obrazu ):
Możesz łączyć git
i latexdiff
(plus, latexpand
jeśli to konieczne) w jednym poleceniu, używając git-latexdiff (np. git latexdiff HEAD^
Aby zobaczyć różnicę między twoim drzewem roboczym a zatwierdzeniem przedostatnim).
Jeśli piszesz długi dokument w lateksie, sugeruję podzielenie różnych rozdziałów na własne pliki i wywołanie ich w pliku głównym za pomocą \include{file}
polecenia. W ten sposób łatwiej jest edytować zlokalizowaną część pracy, a także łatwiej jest kontrolować wersję, ponieważ wiesz, jakie zmiany zostały wprowadzone w każdym rozdziale, zamiast musieć to rozróżniać z dzienników jednego dużego plik.
Użyj oddziałów! . Nie ma chyba lepszej rady, której mógłbym udzielić. Uważam, że gałęzie są bardzo pomocne w śledzeniu „różnych pomysłów” na tekst lub „różnych stanów” pracy. master
Oddział powinien być główny korpus dzieła, w jego najbardziej aktualne „gotowy do opublikowania”, czyli państwa, jeżeli ze wszystkich oddziałów, jeśli istnieje jeden, że jesteś gotów, aby umieścić na nim swoje imię, powinien być oddział mistrz.
Oddziały są również niezwykle pomocne, jeśli jesteś studentem. Jak potwierdzi każdy student, doradca musi wprowadzić liczne poprawki, z którymi większość się nie zgadza. Jednak na razie można się spodziewać, że przynajmniej je zmieni, nawet jeśli zostaną cofnięte później po dyskusjach. W takich przypadkach można utworzyć nową gałąź advisor
i wprowadzić zmiany w jej upodobaniach, zachowując jednocześnie własną gałąź rozwoju. Następnie możesz połączyć dwa elementy i wybrać to, czego potrzebujesz.
Sugeruję również podzielenie każdej sekcji na inną gałąź i skoncentrowanie się tylko na sekcji odpowiadającej gałęzi, na której jesteś. Odradzaj gałąź, gdy tworzysz nową sekcję, lub sekcje zastępcze, kiedy dokonujesz początkowego zatwierdzenia (naprawdę twój wybór). Oprzyj się pokusie edycji innej sekcji (powiedzmy 3), gdy nie jesteś w jej gałęzi. Jeśli musisz edytować, zatwierdź ten, a następnie sprawdź drugi przed rozgałęzieniem. Uważam to za bardzo pomocne, ponieważ utrzymuje historię sekcji we własnej gałęzi, a także pokazuje na pierwszy rzut oka (z drzewa), ile lat ma pewna sekcja. Być może dodałeś materiał do sekcji 3, który wymaga ulepszenia do sekcji 5 ... Oczywiście, najprawdopodobniej zostaną one zaobserwowane podczas uważnego czytania, ale uważam, że pomocne jest zobaczenie tego na pierwszy rzut oka, dzięki czemu mogę zmienić bieg, jeśli ja ”
Oto przykład moich rozgałęzień i scalenia z ostatniego artykułu (używam SourceTree na OS X i git z wiersza poleceń na Linuksie). Prawdopodobnie zauważysz, że nie jestem najczęstszym sprawcą na świecie i nie zostawiam użytecznych komentarzy przez cały czas, ale to nie jest powód, dla którego nie przestrzegasz tych dobrych nawyków. Główna wiadomość na wynos jest taka, że praca w oddziałach jest pomocna. Moje myśli, pomysły i rozwój przebiegają nieliniowo, ale mogę je śledzić za pośrednictwem gałęzi i łączyć je, gdy jestem zadowolony (miałem też inne gałęzie, które nigdzie nie zostały usunięte). Mogę również „tagować” zatwierdzenia, jeśli coś znaczą (np. Wstępne przesłanie do czasopism / poprawione zgłoszenie itp.). Tutaj oznaczyłem ją jako „wersję 1”, czyli tam, gdzie jest teraz wersja robocza. Drzewo reprezentuje tydzień
Inną przydatną rzeczą byłoby samodzielne wprowadzanie zmian \alpha
w \beta
całym dokumencie (np. Zmiana wszędzie). W ten sposób możesz cofnąć zmiany bez konieczności cofania wraz z tym czegoś innego (istnieją sposoby, które możesz to zrobić za pomocą git, ale hej, jeśli możesz tego uniknąć, to czemu nie?). To samo dotyczy dodatków do preambuły.
Użyj zdalnego repozytorium i regularnie pchaj zmiany w górę. Dzięki dostawcom bezpłatnych usług, takim jak github i bitbucket (ten ostatni pozwala nawet na tworzenie prywatnych repozytoriów za pomocą bezpłatnego konta), nie ma powodu, aby z nich nie korzystać, jeśli pracujesz z git / mercurial. Przynajmniej rozważ to jako dodatkową kopię zapasową (mam nadzieję, że masz podstawową!) Dla plików lateksowych i usługę, która pozwala kontynuować edycję od miejsca, w którym pozostawiłeś na innym komputerze.
git [log|show|add] some_file.tex
wszystkie prace, nie trzeba tutaj dodawać stałego przełączania gałęzi. Jeśli chcesz, możesz nadal zatwierdzać każdy plik osobno.Mam również podobny przepływ pracy. Chociaż pracuje się nad jedną gałęzią naraz, uważam za korzystne posiadanie osobnych gałęzi dla różnych stanów pracy. Wyobraź sobie na przykład, że wyślesz dobry doradca do swojego szkicu. Masz szalony pomysł! Chcesz zacząć zmieniać niektóre podstawowe koncepcje, przerabiać niektóre główne sekcje itp. Itd. Więc rozgałęziasz się i zaczynasz działać. Twoja gałąź główna jest zawsze w stanie „do zwolnienia” (lub tak blisko, jak jesteś w tym momencie). Tak więc, podczas gdy twój drugi oddział jest szalony i ma drastyczne zmiany, jeśli inny wydawca chce zobaczyć, co masz, lub jesteś studentem zgłaszającym się na konferencję, główny oddział jest zawsze dostępny, gotowy do pracy (lub gotowy, aby pokazać doradca). Jeśli twój doktorant chce zobaczyć projekt z samego rana,
Powiedzmy, że twoja główna gałąź ma „dający się zwolnić” stan twojej pracy. Teraz chcesz przesłać go do kilku recenzowanych czasopism, z których każdy ma inne wymagania dotyczące formatowania tej samej treści i oczekujesz, że wrócą z kilkoma różnymi drobnymi krytykami dotyczącymi tego, jak możesz edytować artykuł tak, aby pasował do ich czytelników itp. Możesz łatwo utworzyć gałąź dla każdego dziennika, wprowadzić zmiany specyficzne dla dziennika, przesłać, a po otrzymaniu opinii dokonać zmian w każdym oddzielnym oddziale.
Użyłem również Dropbox i git do stworzenia opisanego powyżej systemu. Możesz utworzyć repozytorium bez systemu operacyjnego w folderze Dropbox. Następnie możesz pchać / ciągnąć z dowolnego komputera do skrzynki odbiorczej, aby być na bieżąco na wszystkich końcach. Ten system zwykle działa tylko wtedy, gdy liczba współpracowników jest niewielka, ponieważ istnieje możliwość uszkodzenia, jeśli ludzie będą próbowali jednocześnie wypchnąć repozytorium Dropbox.
Technicznie możesz po prostu przechowywać JEDNE repozytorium w folderze dropbox i wykonywać całą pracę stamtąd. Odradzałbym to jednak, ponieważ ludzie wspominali, że Dropbox ma pewne problemy z synchronizacją plików, które ciągle się zmieniają (dostaje pliki wewnętrzne).
źródło
Próbowałem zaimplementować to jako funkcję bash, zawarłem to w mojej,
~/.bashrc
aby zawsze była dostępna.Zauważ, że ta funkcja musi
latexdiff
zostać zainstalowana (i znajdować się na ścieżce). Ważne jest również, aby znaleźćpdflatex
iokular
.Pierwszy to mój preferowany sposób przetwarzania LaTeX, więc możesz go również wybrać
latex
. Drugi to mój czytnik PDF, przypuszczam, że będziesz chciał użyć goevince
pod gnome lub innym rozwiązaniem.Jest to szybka wersja, stworzona z myślą o jednym dokumencie, a to dlatego, że dzięki git stracisz dużo czasu i wysiłku na śledzenie wieloplikowego dokumentu LaTeX. Możesz pozwolić gitowi wykonać to zadanie, ale jeśli chcesz, możesz także kontynuować korzystanie
\include
źródło
latexdiff
z gitlatexdiff
narzędzia wiersza polecenia, używając tylkogit diff
, jeśli skonfigurujesz go poprawnie.Inną opcją jest użycie Authorei, która jest pewnego rodzaju Githubem w pracach naukowych. Każdy artykuł w Authorea jest repozytorium Git. A skomponowany LaTeX jest renderowany do HTML5 (a także PDF, kiedy kompilujesz).
źródło
użyj tego dla wersji diff, jeśli jesteś
bat
na Windowsie, bez raty, po prostu prosty skrypt Działa idealnie na Windows10, miktex2.9:https://github.com/redreamality/git-latexdiff
źródło