Czuję, że odpowiedź na Twoje pytanie brzmi zdecydowanie tak - korzyści płynące z zarządzania plikami za pomocą systemu kontroli wersji znacznie przewyższają koszty wdrożenia takiego systemu.
Spróbuję szczegółowo odpowiedzieć na niektóre z podniesionych przez Ciebie kwestii:
- Kopia zapasowa: mam już zainstalowany system tworzenia kopii zapasowych.
Tak, ja też. Należy jednak rozważyć kilka kwestii dotyczących stosowności polegania na systemie kopii zapasowych ogólnego przeznaczenia w celu odpowiedniego śledzenia ważnych i aktywnych plików związanych z wykonywaną pracą. Po stronie wydajności:
- W jakich odstępach czasu Twój system kopii zapasowych wykonuje migawki?
- Jak długo trwa tworzenie migawki?
- Czy podczas robienia migawki musi zobrazować cały dysk twardy, czy też można łatwo powiedzieć, aby wykonać kopię zapasową dwóch plików, które właśnie otrzymały krytyczne aktualizacje?
- Czy system tworzenia kopii zapasowych może pokazać z najwyższą dokładnością, co zmieniło się w Twoich plikach tekstowych od jednej kopii zapasowej do drugiej?
I co najważniejsze:
- W ilu lokalizacjach są zapisywane kopie zapasowe? Czy znajdują się w tej samej fizycznej lokalizacji co komputer?
- Jak łatwo jest przywrócić daną wersję pojedynczego pliku z systemu kopii zapasowych?
Na przykład mam komputer Mac i używaj Time Machine do tworzenia kopii zapasowych na innym dysku twardym w moim komputerze. Time Machine doskonale nadaje się do odzyskiwania nieparzystego pliku lub przywracania systemu, jeśli coś pójdzie nie tak. Jednak po prostu nie ma tego, czego potrzeba, aby zaufać mojej ważnej pracy:
Podczas tworzenia kopii zapasowej Time Machine musi wykonać obraz całego dysku twardego, co zajmuje znaczną ilość czasu. Jeśli będę kontynuować pracę, nie ma gwarancji, że mój plik zostanie przechwycony w takim stanie, w jakim był w momencie inicjowania tworzenia kopii zapasowej. Mogę też dojść do innego punktu, który chciałbym zapisać przed zakończeniem pierwszej kopii zapasowej.
Dysk twardy, na którym zapisywane są moje kopie zapasowe Time Machine, znajduje się na moim komputerze - dzięki temu moje dane są narażone na kradzież, pożar i inne katastrofy.
Dzięki systemowi kontroli wersji, takim jak Git, mogę zainicjować tworzenie kopii zapasowej określonych plików bez większego wysiłku niż żądanie zapisu w edytorze tekstu - a plik jest obrazowany i zapisywany natychmiast. Ponadto Git jest dystrybuowany, więc każdy komputer, na którym pracuję, ma pełną kopię repozytorium.
To sprowadza się do odbicia mojej pracy na czterech różnych komputerach - nic poza aktem bożym nie może zniszczyć moich plików i danych, w którym to momencie prawdopodobnie i tak nie przejmowałbym się zbytnio.
- Rozwidlanie i przewijanie: nigdy nie czułem takiej potrzeby, ale widzę, jak mogłoby to być przydatne (np. Przygotowujesz wiele artykułów w czasopiśmie w oparciu o ten sam zestaw danych; przygotowujesz raport, który jest aktualizowany co miesiąc itp. )
Jako solista też tak bardzo nie rozwidlam. Jednak czas, który zaoszczędziłem dzięki możliwości przewijania do tyłu, w pojedynkę zwrócił moją inwestycję w naukę systemu kontroli wersji wiele, wiele razy. Mówisz, że nigdy nie czułeś takiej potrzeby, ale czy przewinięcie dowolnego pliku w obecnym systemie kopii zapasowych było naprawdę bezbolesną i wykonalną opcją?
Czasami raport wyglądał lepiej 45 minut, godzinę lub dwa dni temu.
- Współpraca: przez większość czasu sam analizuję dane, dlatego nie uzyskałbym korzyści współpracy z kontrolą wersji.
Tak, ale nauczyłbyś się narzędzia, które może okazać się niezbędne, jeśli w końcu będziesz współpracować z innymi nad projektem.
- Czas na ocenę i naukę systemu kontroli wersji
Nie przejmuj się tym zbytnio. Systemy kontroli wersji są jak języki programowania - mają kilka kluczowych pojęć, których należy się nauczyć, a reszta to tylko cukier syntaktyczny. Zasadniczo pierwszy system kontroli wersji, którego się nauczysz, będzie wymagał zainwestowania największej ilości czasu - przejście na inny wymaga jedynie nauczenia się, jak nowy system wyraża kluczowe pojęcia.
Wybierz popularny system i zacznij działać!
- Możliwy wzrost złożoności w stosunku do mojego obecnego systemu zarządzania plikami
Czy masz jeden folder, powiedzmy Projects
zawierający wszystkie foldery i pliki związane z twoimi działaniami związanymi z analizą danych? Jeśli tak, to nałożenie na nią kontroli wersji zwiększy dokładnie złożoność systemu plików 0
. Jeśli twoje projekty są rozrzucone po twoim komputerze - powinieneś je scentralizować przed zastosowaniem kontroli wersji, a to zmniejszy złożoność zarządzania twoimi plikami - dlatego w końcu mamy Documents
folder.
- Czy kontrola wersji jest warta wysiłku?
Tak! Zapewnia ogromny przycisk cofania i umożliwia łatwe przenoszenie pracy z maszyny na maszynę bez martwienia się o takie rzeczy, jak utrata dysku USB.
2 Jakie są główne wady i zalety przyjęcia kontroli wersji?
Jedynym minusem, o jakim przychodzi mi do głowy, jest niewielki wzrost rozmiaru pliku - ale nowoczesne systemy kontroli wersji mogą robić absolutnie niesamowite rzeczy dzięki kompresji i selektywnemu zapisywaniu, więc jest to kwestia sporna.
3 Jaka jest dobra strategia rozpoczęcia kontroli wersji do analizy danych w R (np. Przykłady, pomysły dotyczące przepływu pracy, oprogramowanie, łącza do przewodników)?
Kontroluj wersje plików, które generują dane lub raporty, bądź selektywny. Jeśli używasz czegoś podobnego Sweave
, przechowuj swoje .Rnw
pliki, a nie .tex
pliki, które zostaną z nich utworzone. Przechowuj nieprzetworzone dane, jeśli ponowne ich pozyskanie byłoby trudne. Jeśli to możliwe, napisz i przechowuj skrypt, który pozyskuje twoje dane i inny, który czyści je lub modyfikuje, zamiast przechowywać zmiany w surowych danych.
Jeśli chodzi o naukę systemu kontroli wersji, gorąco polecam Git i ten przewodnik po nim.
Te strony internetowe zawierają również kilka fajnych porad i wskazówek związanych z wykonywaniem określonych czynności w Git: