Wpis z mikrobloga

#programowanie #git
Hej!
W pracy używamy wind na paru komputerach i używamy projektów/programów do plc, robotów, kamer i innych pierdół. Póki mieliśmy jeden współdzielony komp to nie było problemu (większego problemu, bo kopie starych projektów zajmują >20 GB), ale teraz mamy zapotrzebowanie na jakiś system kontroli wersji. System ten musi mieć następujące cechy:
- Działać z windowsami 7.
- Nie marudzić na bycie off-line. Kiedy ma połączenie, synchronizować sobie najnowsze wersje.
- Wymagać minimum uwagi przy korzystaniu z niego (wprowadzenie projektów po raz pierwszy już może być bardziej uciążliwe.)
Podejrzewam, że odpowiednio użyty GIT spełni moje wymagania, ale nie chcę startować w losowym kierunku. W pracy jestem najmłodszy stażem, więc póki nie zaproponuję gotowego rozwiązania (i go nie wdrożę) to mnie oleją.
  • 10
@kiciek: no ale synchronizacja leży raczej w gestii programisty- nie wyobrażam sobie zeby mi w trakcie pracy zmienialo kod- w sysyemach kontrolii wersji robi sie to recznie :-) polecam poczytac sobie o branchach i mergowaniu- podstawa w skkutecznej pracy grupowej. Od biedy w przypadku mniejszego projektu można pracowac na jednej galezi ale tak czy siak- ciezko czasem uniknac konfliktow- zwlaszcza gdy czlonkowie zespolu uzywaja roznych srodowisk- np ja uzywalem bracketsów a
@kiciek wszystkie trzy postawione warunki najlepiej spełnia soft dropboxopodony :).
Jeśli chodzi CVSy, znacznie lepiej nadają się one do współdzielonej pracy nad projektami, ale wymagają czasami nieco więcej uwagi (szczególnie przy bardziej skomplikowanym mergowaniu konfliktów). Z drugiej strony w pełni automatycznego rozwiązywania konfliktów bez tracenia danych nigdzie nie znajdziesz.
Jeśli rzeczywiście system ma dobrze działać off-line to git na pewno będzie dobrym rozwiązaniem - choć ma nieco mało-przyjazny zestaw komend. Jest to
@kiciek: i git to jest naprawde wielki kobmbajn, sprawdz czy mercurial nie bedzie Ci bardziej pasował- jest podobny do gita ale prostszy (tak slyszalem bo nie uzywalem przyznam sie bez bicia)
@b0lec: Dla nas jest najważniejsze, żeby była dostępna wersja aktualnie wrzucona na maszynie (sterownik, kamera, robot).
Wyobrażałem sobie to tak, że jeśli zakończę pracę nad projektem i odznaczę, że teraz to co ja zrobiłem jest najnowsze. Wtedy kiedy tylko inne kompy zobaczą mój, to sobie tę wersję pobiorą. Praktycznie się u nas nie zdarza, żeby dwie osoby pracowały nad tym samym, w tym samym czasie.
@franciss: Do tej pory (praca
@kiciek: no to system kontroli wersji nie jes tym czego potrzebujesz. Juz sama nazwa wskazuje- kontrola wersji, głownie chodzi o mzliwosc przechowywania roznych wersji i cofniecia sie w dowolnym momencie do danej migawki.
@kiciek Z tym softem "dropboxopodobnym" to trochę żartowałem... Taki sposób pracy to mordęga i osobiście zwolniłbym się z pracy, która by ode mnie tego wymagała. Git i Mercurial to soft darmowy i można go w swojej firmie postawić - od biedy nawet serwera nie potrzeba, tylko zwykły PC.
Jeśli jednak już koniecznie chcesz, to tu wolna amerykanka. Do wyboru masz mnóstwo rozwiązań, choćby te proponowane w tym artykule.
Najpopularniejsze, są chyba Dropbox,
@kiciek: ej a moze cobian backup :-) co prawda do backupow ale mozna by go uzyc do wspodzielenia projektu oraz tworzenia migawek w wyznaczonych lokalizacjach- glowny projekt na dysku sieciowym- wspodzielony, po robocie kopiuje to co zrobiles na dysk sieciowy a u twoich wspolpracownikow sciaga z dysku sieciowego. cobian dziala jako usluga wiec mozna go dosc fajnie pokonfigurowac i poustawiac rozne opcje zapomoca skryptow i harmonogramu windows (heh zalozylem ze korzystacie
@kiciek: ale polecam doczytac sobie o systemach kontrolii wersji- moga sie wydawac skomplikowane- i są bo temat synchronizacji i wspoldzielenia nie należy do najprostszych. Ale przede wszystkim jest to soft który doslownie ratuje dupę. :-) trudno o lepsza rekomendację (mi ratowal juz nie raz)
@kiciek: GIT

Flow jest taki:

* przed rozpoczęciem pracy zaciągasz sobie najnowsze zmiany: git pull (ze wspólnego repo, wymaga online)
* robisz zmiany (offline)
* dobierasz pliki, których zmiany chcesz zarejestrować git add nazwapliku (offline)
* zapisujesz zmiany git commit -m "zrobiłem XYZ" (offline)
* wysyłasz zmiany do wspólnego repo git push (online)

Chcesz popracować nad alternatywną wersją? Branche – nie musisz kopiować plików – każda „gałąź” ma oddzielną historię, zestaw