2010-02-20 13 views
5

Mam potrzebę kodu z dwóch komputerów w ciągu tygodnia. Jaki jest najlepszy sposób na zsynchronizowanie dwóch komputerów (mac)? Zacząłem używać kontroli źródła, na przykład SVN. Działa całkiem nieźle, z wyjątkiem czasami, gdy sprawdzam kod, który chcę zsynchronizować, ale nie kompiluje się i przeszkadza innym osobom w zespole pracującym nad tym samym projektem.Jaki jest dobry sposób synchronizacji plików kodu między komputerem?

Nie chcę używać oddziału. Nie ma sensu rozgałęziać się każdej nocy, kiedy wracam do domu z biura.

Odpowiedz

5

Możesz sprawdzić swój kod w oddziale, a nie na bagażniku. Wtedy uzyskasz wszystkie zalety kontroli wersji bez przeszkadzania innym osobom przy błędach kompilacji.

Istnieje opis podziału na subversion here.

+1

Ale woudln't chcę każdy oddział noc. – erotsppa

+0

@erotsppa: Rozgałęzienie jest dość prostym zadaniem - po prostu tworzy identyczną kopię projektu (z wyjątkiem tego, że kopiowanie naprawdę nie jest wykonywane na serwerze). Na szczęście nie musisz rozgałęziać się co noc - po utworzeniu oddziału możesz po prostu przełączać się do tej gałęzi, kiedy chcesz. –

0

Spróbuj użyć gałęzi w swoim repozytorium svn. Lub możesz użyć iDisku, jeśli masz subskrypcję MobileMe.

+0

Dropbox> iDisk – Sharpie

5

Inne dobre sposoby to Mercurial lub GIT.

Są one podobne do tych, które próbujesz osiągnąć, z wyjątkiem DSCM (rozproszonych), więc nie musisz konfigurować całego serwera tylko po to.

Upewnij się, że wykonujesz AKTUALIZACJĘ przed SPRAWDZENIEm W KODZIE, a po UPDATE upewnij się, że twój projekt jest zbudowany.

+0

Można powiedzieć, że sprawiają, że rozgałęzienie jest tak łatwe i proste, że nie będziesz miał nic przeciwko tworzeniu i łączeniu kilku oddziałów każdego dnia. –

+0

+1 również. Zasugerowałem tylko SVN, ponieważ to jest to, czego on już używa, a on już ma konfigurację serwera SVN, więc może być mniejszym krokiem do nauki rozgałęzień w SVN niż do zupełnie nowego systemu. Ale nauka git byłaby tego warta. Istnieje również integracja między SVN i Git. –

1

Powinieneś zawsze upewnić się, że Twój kod jest zgodny, zanim zatwierdzisz SVN. Przed zatwierdzeniem należy wykonać aktualizację i wykonać niezbędne scalanie. W niektórych zespołach wiem, że jest grzywna za popełnienie kodu, którego nie można spełnić.

0

Istnieje kilka prostych zasad, których należy przestrzegać, jeśli nie chcesz ingerować w kod, który musi zostać skompilowany przez innych programistów.

  • Stwórz własne SVN branch że tylko pracować na i zobowiązać się do
  • Ilekroć część kodu jest gotowa dzielić się z innymi programistami (lub gotowy do wydania), scalić zmiany z powrotem do głównej gałęzi ("trunk")
  • Lub jeśli nie chcesz używać gałęzi: upewnij się, że Twój program kompiluje się, a testy jednostkowe kończą się pomyślnie, zanim je zatwierdzisz. W ten sposób będzie mniej konfliktów z kodami innych osób.
+0

Zdecydowanie polecę z sugestią Branching. Jeśli nie rozgałęzisz się, a zamiast tego zawsze czekasz, aby upewnić się, że testy jednostek przejdą przed zatwierdzeniem, możesz potencjalnie czekać przez dłuższy czas pomiędzy zatwierdzeniami, co jest złym nawykiem (im mniejsze, bardziej ziarniste są twoje zatwierdzenia, łatwiej jest przywrócić zmiany, a dzięki większej liczbie komunikatów zatwierdzania, mam nadzieję, że dokumenty będą lepsze). – jbrennan

2

Czy próbowałeś już Dropbox? to po prostu konfiguracja folderu, który przejdzie przez wiele komputerów z uruchomioną aplikacją i zapisuje wersje plików, jednak nigdy nie zmęczyłem go w środowisku programistycznym

2

Z mercurial (hg) lub git nie potrzebujesz serwera kontroli wersji. Możesz zsynchronizować klucz USB, pakiety wysłane pocztą lub tymczasowo uruchomiony serwer ("hg serve"). W ten sposób nikt inny nie dowiedziałby się o żadnym serwerze kontroli wersji i nie ingerowałbyś w członków twojego zespołu. Zarówno hg, jak i git mogą wchodzić w interakcje z subversion (nie wiem, jak dobrze to robią).

3

Użyj czegoś takiego jak Microsoft Foldershare (teraz nazywa się Live Sync). To nic nie kosztuje i działa dobrze na komputerach Mac.

Nie używaj do tego kontroli źródła. Na moim Macu używałem wcześniej Microsoft FolderShare i działa naprawdę dobrze.Za każdym razem, gdy zapiszę plik, w ciągu 2-3 sekund zmiany będą propagowane na wszystkie zsynchronizowane komputery. Jedynym zastrzeżeniem jest to, że nie ma chmurki, więc obie (lub przynajmniej jedna stała) maszyny muszą być w tym samym czasie online. FolderShare nie działa w przypadku gigantycznych bibliotek MP3, ale działa dobrze dla drzew kodu.

-1

rozwiązania oszustem, który działa:

  1. mój preferowany: Prosty e-mail, Właśnie .zip folderu często i e-maila go do siebie. Jeśli mój komputer umiera, nie ma problemu, ponieważ używam również "Pozostaw pocztę na serwerze" dla kont POP3. W ten sposób otrzymuję kopię zapasową i wersjonowanie.

  2. użyj dysku flash. Pracuj z dysku flash i twórz kopię zapasową na dysk twardy lub odwrotnie.

Powyższe dwie metody działają bardzo dobrze dla jednego dewelopera przy użyciu wielu komputerów.

Edycja: oops, przepraszam, brakowało aspektu zespołu. Rozwiązanie e-mail nadal działa, ale w przypadku zespołu kontrola źródła jest najlepsza, ponieważ wiele osób koduje ten sam kod. Uważam, że TFS i Problem z systemami kontroli źródła to krzywa uczenia się do opanowania. Niestety, w środowisku zespołowym to niezbędne zadanie.

0

Uwielbiam Microsoft Live Mesh, jest łatwy w użyciu, wystarczy wybrać folder do zsynchronizowania i dobrze jest iść.

2

Myślę, że wiele osób zbytnio to komplikuje. Rozwiązanie jest oczywiste. Wystarczy skorzystać z przenośnego urządzenia USB i mieć tam swój katalog kasowy. Dla danego scenariusza miałoby to wiele sensu.

+0

+1 również tutaj: jest to bardzo proste rozwiązanie, które wydaje się wystarczające dla potrzeb PO. Ale jeśli zdecydujesz się nie zatwierdzać swojego kodu, upewnij się, że nie zgubisz napędu USB! –

0

Użyj Fuse and sshfs do zamontowania odpowiednich katalogów na maszynie roboczej na komputerze w domu.

2

Użyj git. Masz wszystkie zalety systemu kontroli wersji, ale działają lokalnie. Jeśli twój kod projektu jest już w SVN, możesz użyć git-svn, aby współpracować zarówno git, jak i svn. Here's an easy to follow guide on git-svn by example.

Z git łatwo jest rozgałęziać się, więc będziesz chciał bardzo często rozgałęziać. Oddziały Git różnią się od gałęzi SVN: są przechowywane lokalnie i nie są po prostu kopią całego twojego projektu, jak w SVN. Na koniec skonfiguruj Dropbox na obu komputerach, aby zmiany zostały automatycznie zsynchronizowane.

Więc Workflow może być coś takiego:

  • git-svn clone http://mysvnrepo local_dir dostać lokalnym repozytorium
  • git checkout -b my_new_branch gdy chcesz pracować na nowej funkcji
  • Sprawdź w kodzie tak często, jak trzeba , nie martwiąc się o złamanie kodu innej osoby
  • Lokalne zmiany są automatycznie synchronizowane dzięki Dropbox
  • Gdy twój kod jest gotowy, scalić ją do gałęzi głównej z git merge my_new_branch
  • A swoje zmiany z powrotem do repozytorium Subversion, najpierw zaktualizować lokalne repozytorium z git-svn rebase a następnie popełnić z git-svn dcommit