Czy jest możliwe hostowanie gołego repozytorium Git za pomocą Dropbox, aby udostępnić kod?

Zdaję sobie sprawę, że istnieją podobne pytania, ale moje pytanie jest nieco inne: zastanawiam się, czy udostępnienie nagiego repozytorium poprzez zsynchronizowany folder Dropbox na wielu komputerach byłoby odpowiednie dla udostępnienie kodu przez Git?

Innymi słowy: czy udostępnianie Git repo przez Dropbox to to samo, co udostępnianie go z jednej scentralizowanej lokalizacji, na przykład przez SSH lub HTTP?

Czy repo jest aktualizowane na lokalnym dysku każdej osoby? Czy to to samo, co udostępnianie repo Git za pośrednictwem współdzielonego dysku sieciowego?

Uwaga: to jest a nie pytanie empiryczne: wydaje się, że działa dobrze. Pytam, czy struktura repo Gita jest zgodna z tym sposobem udostępniania.

EDIT aby wyjaśnić / powtórzyć, mówię o utrzymaniu repozytorium Git na Dropbox jako gołe repozytorium. Nie mówię o utrzymywaniu rzeczywistych plików, które są pod kontrolą źródła w Dropbox.

 21
Author: Community, 2010-02-04

8 answers

Jestem pewien, że to niebezpieczne. W repozytorium Git jest kilka ruchomych części, a Dropbox może łatwo zniszczyć jedną z nich. Na przykład możesz skończyć z nieprawidłowymi końcówkami gałęzi (master itp.) w katalogu refs, lub twój obiekt może przestać działać, jeśli plik objects/info/packs ma niewłaściwą zawartość. Repozytoria Git są dość proste i solidne, ale nie są tylko dumb unbreakable storage.

Dostęp do zdalnych repozytoriów poprzez SSH, git lub HTTP, a nawet lokalnie na sieciowy system plików jest bezpieczny, ponieważ repozytorium jest dostępne tylko przez proces git, który zapewnia, że wszystko jest przeniesione na miejsce w odpowiedniej kolejności. Ale Dropbox nie daje żadnych gwarancji dotyczących składania zamówień, więc możesz stracić dane.

Zamiast tego Użyj serwera Git (lub dowolnego serwera SSH) -- jeśli go nie masz, GitHub, na myśl przychodzi Bitbucket lub GitLab. To zaoszczędzi Ci wiele kłopotów i nie jest trudniejsze w użyciu niż lokalne repozytorium udostępniane przez Dropbox (masz tylko adresy URL SSH zamiast ścieżek lokalnych).

 15
Author: Jo Liss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-14 12:50:08

Nie widzę powodu, dla którego miałby tracić dane-struktura repozytorium Gita jest solidna, a w samym repozytorium pliki o tej samej nazwie zawsze będą miały tę samą zawartość(Nie dotyczy to nazw gałęzi).

To jednak nie będzie skuteczne. Protokół transferowy Gita oznacza, że zazwyczaj przeniesie on zmianę tylko raz. W przypadku Dropbox, Jeśli dwie osoby spakują nieco różne repozytoria, wygenerowane pakiety mogą zawierać znaczące wspólne dane, a jednocześnie nie są identyczne, więc DropBox zsynchronizowałby oba pakiety, co jest nieefektywne.

Może się również okazać, że pomimo tego, że dane są tam wszystkie, możesz skończyć z nie-śledzonymi zmianami z powodu dwóch kopii, które mają tę samą gałąź zaktualizowaną w tym samym czasie. Można to obejść, upewniając się, że naciskasz na różne gałęzie z każdej kopii, ale byłoby to bolesne.

 20
Author: Andrew Aylett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 12:52:08

Co się stanie, jeśli dwóch użytkowników zostanie rozłączonych, wykonają jakąś pracę, wypchną się do lokalnej kopii repozytorium i włączą się? W takim przypadku, gdy Dropbox spróbuje zsynchronizować, pojawią się problemy-pack files i branch tips będą różne i Dropbox nie może tego naprawić. To jedyny problem, jaki widziałem. Myślę, że to samo może się zdarzyć, nawet jeśli obaj użytkownicy są połączeni, jeśli zdarzy się, że będą wpychać do swoich lokalnych repozytoriów w tym samym czasie.

 12
Author: Pat Notz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 14:37:00

Miałem problemy z używaniem Dropbox z Git i z Mercurial. Pliki repozytorium często ulegają uszkodzeniu, prawdopodobnie ze względu na to, że synchronizacja Dropbox nie jest idealna, szczególnie gdy zmiany są wprowadzane z wielu miejsc. Ponadto Dropbox działa w tle, więc naprawdę łatwo jest przypadkowo spróbować użyć repozytorium (lub zrestartować komputer), gdy jest on w trakcie operacji synchronizacji.

Kocham Dropbox, ale nie jest to dobry zamiennik dla współdzielonego dysku lub" prawdziwego " zdalnego Repozytorium Git.

 9
Author: Kristopher Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-09 17:58:54

Kiedyś robiłem to z MobileMe, ale Komputery się nie synchronizowały. Każdy komputer miałby repo, które było inne niż ten w chmurze, a ponieważ nie ma pojęcia "merge" w MobileMe (i zakładam, DropBox, też, prawda?) Musiałbym albo wybrać wersję do zachowania i stracić kilka edycji, albo skopiować edycje i ponownie zastosować je. Życie stało się o wiele łatwiejsze, odkąd przeszedłem do centralnego repo Git.

Jeśli do tej pory ci to pasuje, to dobrze. I wyobraź sobie, że będziesz miał dużo bólu, jeśli dwóch deweloperów naciśnie na ich lokalne nagie repo w tym samym czasie. Skąd DropBox będzie wiedział, która jest właściwa?

 5
Author: kubi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 12:47:01

Gdybym ci powiedział, że są przypadki, w których Dropbox spieprzył mój Git, odpowiedziałbym na twoje pytanie sprzecznością? Przynajmniej z mojego doświadczenia wynika, że zdarzyło się to więcej niż 5 razy i jest wiele osób mających to samo doświadczenie tam.

Ale w dzisiejszych czasach nie wierzę, że Dropbox jest tak naprawdę niezbędny z Gitem, naprawdę. W rzeczywistości możesz ustawić zdalne gałęzie (Github, Gitorious, Bitbucket), które mogą zastąpić funkcje udostępniania Dropbox i historii wersji (to nie wszystko chodzi o Dropbox?) i zaoferować Ci jeszcze więcej.

 3
Author: vasilakisfil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-29 20:08:24

Jeden problem z DropBox ma związek z tym, jak radzą sobie z historycznymi kopiami zapasowymi. Chociaż możesz cofnąć pojedynczy plik (w ciągu ostatnich 30 dni lub na zawsze, jeśli masz PackRat), nie możesz cofnąć całych katalogów. Oznacza to, że jeśli twój repo zostanie spieprzony z jakiegokolwiek powodu, niesamowita usługa posiadania historycznej kopii zapasowej jest zasadniczo bezużyteczna, ponieważ będziesz musiał kliknąć tysiące plików, aby przywrócić je do wcześniejszej wersji.

A potem są problemy z warunkami wyścigu, jeśli wolisz, wymienione przez większość innych odpowiedzi.

 2
Author: Dan Rosenstark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-08 10:35:20

Właśnie hostuję moje repozytorium na github.com jako prywatne repozytorium. Tak, musisz zapłacić za mikro plan ($7/plan), ale masz bezpieczeństwo wiedząc, że masz kopię zapasową kodu Na Zewnątrz.

 0
Author: Quy Le,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-17 08:47:37