Kontrola wersji dla niezależnych programistów?

60

Czy uważasz, że warto używać kontroli wersji, jeśli jesteś niezależnym programistą, a jeśli tak, to dlaczego? Czy przechowujesz repozytorium na swoim komputerze, czy gdzie indziej, gdzie może służyć jako kopia zapasowa?

żarliwość
źródło
54
Bardzo chciałbym zobaczyć, jak farmaceuta pyta: „Czy powinienem przechowywać leki w zorganizowany sposób, czy po prostu wrzucić je wszystkie do szuflady? Czy warto?”
Erik,
23
Wyobraź sobie, że ciężko pracujesz przez tydzień, tworząc niesamowite oprogramowanie. Następnie usuń go. Jak byś się czuł? To nie tylko przechowywanie. Kiedy coś się zepsuło, co zadziałało w zeszłym tygodniu, możesz spojrzeć i zobaczyć, co się zmieniło, i zwykle zobaczyć, co popsułeś. Nadal widzę „profesjonalnych” programistów z folderami backup001 i backup_backup001 zmieszanymi z ich źródłami. Kształtuj dobre nawyki, gdy jesteś jeszcze młody.
Erik,
@Erik Yuck, foldery kopii zapasowych brzmią paskudnie. Używam kontroli źródła w swoich projektach, choć nie jestem zbyt dobry w częstym angażowaniu się.
vedosity

Odpowiedzi:

61

Jeśli używasz zdecentralizowanej kontroli źródła (Mercurial, Git, Bazaar lub cokolwiek innego), zyskujesz przewagę nad SVN / CVS, co sprawia, że ​​jest to łatwe, użyteczne i wydajne w użyciu w przypadku, gdy jesteś indykiem:

  1. Dokonujesz transakcji lokalnie : katalog projektu jest Twoim repozytorium z PEŁNĄ historią. Więc nie musisz mieć serwera, zatwierdzasz bezpośrednio w repozytorium i możesz mieć kilka repozytoriów na tym samym komputerze. Używasz laptopa, który czasami otwierasz, aby kontynuować pracę nad swoimi rzeczami? Wspaniały! Nie musisz konfigurować serwera, a jeśli potrzebujesz go później, jest to łatwe i po prostu „wypychasz” i „ściągasz” zmiany między repozytoriami.
  2. Ma na celu ułatwienie eksperymentowania : często musisz mieć pojęcie o funkcji bez zanieczyszczania kodu. Dzięki SVN i CVS możesz już korzystać z systemu rozgałęziania i porzucić gałąź, jeśli ta funkcja nie jest tak dobra, jak chcesz. Ale jeśli chcesz połączyć tę funkcję z wersją bagażnika, będziesz mieć wiele trudnych do naprawienia niespodzianek. Git, Mercurial i Bazaar (przynajmniej) sprawiają, że fuzje i oddziały są naprawdę łatwe. Możesz nawet po prostu zduplikować repozytorium, popracować nad nim przez jakiś czas, nadal zatwierdzać i zabijać je lub przesuwać zmiany w repozytorium głównym, jeśli chcesz.
  3. Elastyczność organizacji : jak już wcześniej wspomniano, ponieważ repozytoria, które organizujesz w miarę potrzeb, łatwo jest zacząć samemu i pozwolić innym osobom współpracować z Tobą, zmieniając organizację. Żadna organizacja nie jest narzucana, więc wystarczy ją skonfigurować i voila. Często po prostu pcham / wyciągam zmiany między moimi własnymi komputerami (laptopem / komputerem stacjonarnym / serwerem) i wciąż jestem sam na moich programistach. Korzystam z Mercurial, co pomaga mi powielić moją pracę, ale także pracować nad funkcjami, o których myślałem na zewnątrz na swoim laptopie, a następnie kontynuować pracę nad innymi funkcjami na pulpicie, a następnie przesyłać zmiany laptopa na pulpicie lub serwerze i scalać cały pulpit + laptop i umieść go (jako kopię zapasową i repozytorium przyszłej pracy zespołowej) na moim serwerze.
  4. Pomaga w tworzeniu kopii zapasowych : jeśli skonfigurujesz centralne repozytorium (na GitHub, jeśli jest publiczne lub w prywatnym repozytorium na BitBucket), możesz łatwo napisać skrypt, który zostanie wykonany przy każdym uruchomieniu komputera, a następnie przekazać ten skrypt na do znajomych, aby regularnie tworzył automatyczne kopie zapasowe pracy. Właśnie to robię, więc jestem pewien, że stracenie pracy nie będzie łatwe.

W rzeczywistości obecnie nie ma wymówki, aby nie używać narzędzia źródła kontroli dla żadnego projektu. Ponieważ są one bardziej wydajne i elastyczne niż wcześniej i mogą być skalowane zgodnie z Twoimi potrzebami.

Klaim
źródło
6
Zawsze jest GitHub .
HedgeMage
8
Lub bitbucket.org, jeśli używasz Mercurial.
Terence Ponce
7
Mercurial z repozytorium lokalnego systemu plików na Dropbox działa naprawdę dobrze dla pojedynczego programisty.
Pieter Breed,
1
@Guillaume: Jeden programista może korzystać z „rozproszonego” aspektu DVCS. Ja robię. Na przykład, mogę pracować na komputerze, naciśnij moją pracę na moim kluczu USB, a następnie wyciągnąć z tego klucza USB na komputer B.
barjak
1
@Guillaume „Rozproszony” jest aspektem technicznym, a nie organizacyjnym. Możesz użyć scentralizowanego systemu źródłowego constrol z organizacją, w której integratorzy mogą sprawdzać tylko zatwierdzony kod. Jest to możliwe, ale trudne do skonfigurowania ze względu na scentralizowany charakter narzędzia. Ale to wciąż problem ortogonalny.
Klaim
34

kontrola kodu źródłowego jest całkowicie bezużyteczna dla niezależnych programistów, ponieważ jak wszyscy wiemy:

  • niezależni programiści nigdy nie popełniają błędów
  • niezależni programiści nigdy nie wybierają wersji, które się nie sprawdzają
  • niezależni programiści nigdy nie mają więcej niż jednej wersji, więc nie mają zastosowania dla oddziałów
  • niezależni programiści nigdy nie dbają o to, co zmienili wczoraj lub w zeszłym tygodniu
  • niezależni programiści nigdy nie potrzebują kopii zapasowych

Nazwij mnie „deweloperem zależnym”: repozytoria Mercurial łatwo klonują się między moim komputerem stacjonarnym, laptopami, dyskami USB do tworzenia kopii zapasowych i bitbucket.org. Stałem się zależny i lubię to w ten sposób!

Steven A. Lowe
źródło
6
Czy ta odpowiedź jest sarkastyczna?
4
@kurtnelle: niezwykle!
Steven A. Lowe
1
Kewlio, tylko sprawdzam.
21

Dlaczego nie?

Jestem solistą i używam BitBucket i Mercurial do moich osobistych projektów. Możliwość cofnięcia i rozwidlenia kodu jest po prostu zbyt dobra, aby go pominąć.

Terence Ponce
źródło
8
+1 dla BitBucket - oferują nieograniczone prywatne repozytoria za darmo.
Jon Sagara,
2
Darmowe prywatne repozytoria są powodem, dla którego używam BitBucket przez GitHub.
Terence Ponce,
4
darmowe prywatne repo? Możliwe, że przekonwertowałeś mnie z git na hg.
Gauthier,
@Gauthier, tak, BitBucket ma darmowe prywatne repo. Nie jestem jednak pewien, czy są nieograniczone.
Terence Ponce,
1
Nadal możesz używać git z bitbucket. W rzeczywistości import prosto z github, w tym klucze ssh. Właśnie wykonałem ruch, ale nadal używam git (bardziej mi się podoba!)
Daniel Casserly,
1

Osobiście znajduję w tym wartość. Wszystkie moje projekty są sprawdzane w repozytoriach git (z których wszystkie przechowuję na wielu komputerach w przypadku awarii sprzętu). Najbardziej przydatne funkcje to rozgałęzianie (dzięki czemu mogę przeprowadzić eksperyment, który nie działa z połową mojej bazy kodu i nie martwię się o trwałe wysadzenie czegokolwiek) i przywracanie (co w zasadzie polega na cofnięciu sterydów; na wypadek, gdyby okazało się, że zrobiłem trochę błąd, który jest poza regularnym cofnięciem).

Inaimathi
źródło
1

Tak. To jest bardzo, bardzo przydatne. Mój przyjaciel Matt Gallagher opublikował ten znakomity artykuł na ten temat zaledwie kilka dni temu na swoim blogu programistycznym iOS / MacOS „Cocoa With Love”.

Artykuł dotyczy Mac & Git, ale obejmuje podstawy.

Mogą Cię również zainteresować poniższe pytania StackExchange (i ich odpowiedzi).

orj
źródło
1

Wartość?? Musieć! Jeśli nie korzystasz z kontroli źródła, nie kontrolujesz źródeł, a to źle. Nie możesz się różnić, nie możesz cofnąć, nie możesz śledzić zmian - poświęcisz godziny na znalezienie fałszywego błędu, który właśnie wprowadziłeś. Lepiej jest mieć go na jakimś serwerze z kopią zapasową, ale możesz także mieć swój komputer i użyć dowolnej metody tworzenia kopii zapasowych, która Ci odpowiada.

Assimiz
źródło
2
Właściwie używam kontroli źródła, ale mam też tendencję do robienia takich rzeczy, jak nadmierna inżynieria i przyjmowanie rzeczy, które są nadmierne. Jestem dobrze znany z tego w pracy. Z drugiej strony, nie sądzę, aby programiści, w których pracuję, w tym ja, pracowali nigdzie indziej jako programiści, a większość z nas nadal jest w szkole średniej.
vedosity
1

Absolutnie użyj kontroli źródła. Następnie skonfiguruj serwer kompilacji i zautomatyzuj procesy kompilacji i testowania. Trigger buduje z twoich źródłowych zatwierdzeń centralnego repozytorium. Pracuję sam przez trzy lata w ten sposób i to jest wspaniałe.

Dave Neeley
źródło
0

Tak.

Nawet pojedynczy programiści muszą czasem zobaczyć stan swojego kodu z poprzedniej wersji. Zawsze dobrym pomysłem jest tworzenie kopii zapasowych wszystkiego, co ważne, i dotyczy to wszystkich ludzi.

Jaka jest nazwa?
źródło