git
version-control
cloud
dropbox
n1kh1lp
źródło
źródło
Odpowiedzi:
Myślę, że Git na Dropbox jest świetny. Używam tego cały czas. Mam wiele komputerów (dwa w domu i jeden w pracy), których używam Dropbox jako centralnego repozytorium. Ponieważ nie chcę hostować go w usłudze publicznej i nie mam dostępu do serwera, do którego zawsze mogę ssh, Dropbox zajmuje się tym, synchronizując (bardzo szybko) w tle.
Konfiguracja wygląda mniej więcej tak:
Stamtąd możesz po prostu sklonować
~/Dropbox/git/project.git
powiązanie ze swoim kontem Dropbox (lub udostępnić ten katalog innym osobom), możesz wykonać wszystkie normalne operacje Git i zostaną one automatycznie zsynchronizowane ze wszystkimi innymi komputerami.Napisałem post na blogu, „ Kontrola wersji” ( stary link nie żyje ) na temat mojego rozumowania i sposobu konfiguracji środowiska. Opiera się on na doświadczeniu programistycznym Ruby on Rails , ale tak naprawdę można go zastosować do wszystkiego.
źródło
Właściwym sposobem na to jest użycie git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox
Utworzenie własnego nagiego repozytorium w Dropbox powoduje wiele problemów. Anish (twórca biblioteki) wyjaśnia to najlepiej :
źródło
Ta odpowiedź jest oparta na doświadczeniu Mercurial , a nie na Git, ale doświadczenie to mówi, że korzystanie z Dropbox w ten sposób prosi o uszkodzone repozytoria, jeśli istnieje nawet szansa, że będziesz aktualizować to samo repozytorium oparte na Dropbox z różnych komputerów w różnych momentach (Mac, Unix, Windows w moim przypadku).
Nie mam pełnej listy rzeczy, które mogą się nie udać, ale oto konkretny przykład, który mnie ugryzł. Każda maszyna ma swoje własne pojęcie o znakach kończących wiersze oraz o tym, jak w nazwach plików obsługiwane są wielkie / małe litery. Dropbox i Git / Mercurial radzą sobie z tym nieco inaczej (nie pamiętam dokładnych różnic). Jeśli Dropbox zaktualizuje repozytorium za plecami Git / Mercurial, repozytorium uszkodzone. Dzieje się to natychmiast i niewidocznie, więc nawet nie wiesz, że twoje repozytorium jest uszkodzone, dopóki nie spróbujesz coś z niego odzyskać.
Po wykopaniu się z jednego bałaganu i robieniu tego w ten sposób, korzystam z następującego przepisu z wielkim sukcesem i bez oznak problemów. Po prostu przenieś swoje repozytorium poza Dropbox. Użyj Dropbox do wszystkiego innego; dokumentacja, pliki JAR , cokolwiek zechcesz. I użyj GitHub (Git) lub Bitbucket (Mercurial) do zarządzania samym repozytorium. Oba są bezpłatne, więc to nic nie zwiększa kosztów, a każde narzędzie wykorzystuje teraz swoje zalety.
Uruchomienie Git / Mercurial na Dropbox nie dodaje nic oprócz ryzyka. Nie rób tego
źródło
W odniesieniu do małych zespołów korzystających z Dropbox:
Jeśli każdy programista ma własne zapisywalne repozytorium na Dropbox, które jest pobierane tylko dla innych programistów, ułatwia to dzielenie kodu bez ryzyka uszkodzenia!
Następnie, jeśli chcesz scentralizowanej „linii głównej”, możesz mieć jednego programistę, który zarządza wszystkimi wypchnięciami do niego z własnego repozytorium.
źródło
Nie chciałem umieszczać wszystkich moich projektów w jednym repozytorium Git, ani nie chciałem wchodzić i uruchamiać tego kodu dla każdego projektu, więc stworzyłem skrypt Bash , który zautomatyzuje ten proces. Możesz użyć go w jednym lub wielu katalogach - dzięki czemu może on zrobić kod w tym poście dla ciebie lub może to zrobić w wielu projektach jednocześnie.
źródło
Nie sądzę, aby korzystanie z Git i Dropbox było dobrym rozwiązaniem ... Pomyśl tylko o funkcjach obu:
Git:
Dropbox:
A jeśli martwisz się udostępnianiem niektórych swoich plików, dlaczego nie zaszyfrować ich? A potem możesz uzyskać największą korzyść Dropbox z Git, to znaczy mieć pliki publiczne i prywatne ...
źródło
Jest teraz 2015 r., A trzy dni temu zostało utworzone nowe narzędzie oparte na API Dropbox v2 , aby bezpiecznie korzystać z git na Dropbox. Działa przeciwko interfejsowi API zamiast przy użyciu klienta pulpitu i poprawnie obsługuje wiele jednoczesnych wypychań do repozytorium hostowanego w folderze współdzielonym.
Po skonfigurowaniu umożliwia skonfigurowanie pilota git dokładnie tak, jak każdego innego pilota git.
źródło
Używam Mercurial (lub Git) + TrueCrypt + Dropbox do szyfrowania zdalnych kopii zapasowych .
Najfajniejsze jest to, że Dropbox NIE synchronizuje całego kontenera TrueCrypt, jeśli zmodyfikujesz niewielką część kodu. Czas synchronizacji jest mniej więcej proporcjonalny do ilości zmian. Mimo że jest szyfrowany, połączenie TrueCrypt + Dropbox doskonale wykorzystuje synchronizację szyfru blokowego + synchronizację poziomu bloku.
Po drugie, monolityczny zaszyfrowany pojemnik nie tylko zwiększa bezpieczeństwo, ale także zmniejsza ryzyko uszkodzenia repozytorium .
Uwaga: Należy jednak bardzo uważać, aby nie zamontować kontenera podczas działania Dropbox. Rozwiązywanie konfliktów może być również utrudnione, jeśli 2 różnych klientów zamelduje różne wersje kontenera. Jest to więc praktyczne tylko dla jednej osoby używającej go do tworzenia kopii zapasowych, a nie dla zespołu.
Ustawiać:
preserve modification timestamp
*.Stosowanie:
PS Odznaczenie
preserve modification timestamp
dropbox informuje, że plik został zmodyfikowany i należy go zsynchronizować. Pamiętaj, że zamontowanie kontenera modyfikuje znacznik czasu, nawet jeśli nie zmienisz w nim żadnego pliku. Jeśli nie chcesz, aby tak się stało, po prostu zamontuj wolumin jakoread-only
źródło
Uwielbiam odpowiedź Dana McNevina! Używam teraz Git i Dropbox razem i używam kilku aliasów w moim .bash_profile, więc mój przepływ pracy wygląda następująco:
Oto moje pseudonimy:
źródło
Używamy tej metody (tworzenie nagiego repozytorium w Dropbox) w folderze udostępniania .
Niewielka grupa programistów może pobrać z tego zsynchronizowanego repozytorium i utworzyć lokalny klon. Po zakończeniu jednostki pracy cofamy się do źródła.
Jedną z rzeczy, których mi brakuje, jest dobry sposób na wysłanie wiadomości e-mail z informacjami o zestawie zmian, gdy nastąpi wypychanie do źródła. Używamy Google Wave do ręcznego śledzenia zmian.
źródło
Używam Mercurial w zalecany sposób i zachęcam do zachowania ostrożności, szczególnie jeśli którakolwiek z maszyn różni się. Fora Dropbox są pełne skarg na tajemnicze problemy z nazwami plików pojawiające się spontanicznie. Hg (i przypuszczam, że Git) nie zauważy ani nie narzeka podczas rutynowych kontroli, a usłyszysz o korupcji tylko wtedy, gdy narzeka na zepsute repo, gdy próbujesz go użyć naprawdę. Złe wieści. Chciałbym być bardziej szczegółowy na temat problemu i jego obejść; Nadal sam próbuję wydostać się z tego bałaganu.
źródło
Istnieje również projekt open source (zbiór skryptów między platformami [Linux, Mac, Win]), który wykonuje wszystkie drobiazgowe szczegóły zarządzania repozytorium za pomocą kilku (3-4) poleceń.
https://github.com/karalabe/gitbox/wiki
Przykładowe użycie to:
Po czym normalne użycie git:
Sprawdź wiki projektu i podręczniki, aby uzyskać pełne informacje na temat poleceń i samouczki.
źródło
Przechowuję moje repozytorium inne niż Github na Dropbox. Jednym zastrzeżeniem, na które natrafiłem, była synchronizacja po ponownej instalacji. Dropbox najpierw pobierze najmniejsze pliki, zanim przejdzie do większych. Nie stanowi problemu, jeśli zaczniesz w nocy i wrócisz po weekendzie :-)
Mój wątek - http://forums.dropbox.com/topic.php?id=29984&replies=6
źródło
Teraz w 2014 roku bez problemu korzystam z Git i Dropbox od około półtora roku. Niektóre punkty:
git push
wypycha do zdalnego repozytorium, więc jeśli kiedykolwiek zostanie uszkodzony, mogę go łatwo odzyskać.C:\Users
zmklink /D link target
ponieważ niektóre biblioteki wskazał bezwzględnych lokalizacjach.źródło
Podoba mi się najlepiej głosowana odpowiedź Dana McNevina. Skończyłem robić sekwencję poleceń git zbyt wiele razy i postanowiłem napisać skrypt. Oto on:
Skrypt wymaga tylko nazwy projektu. Wygeneruje repozytorium git
~/Dropbox/git/
pod podaną nazwą i przepchnie całą zawartość bieżącego katalogu do nowo utworzonej gałęzi master pochodzenia. Jeśli podano więcej niż jedną nazwę projektu, użyty zostanie argument znajdujący się najbardziej po prawej stronie.Opcjonalnie argument -r komendy określa gałąź zdalną, która będzie przekazywać do wzorca początkowego. Położenie wzorca początkowego projektu można również określić za pomocą argumentu -m. Domyślny plik .gitignore znajduje się również w zdalnym katalogu oddziału. Domyślne ustawienia katalogu i pliku .gitignore są określone w skrypcie.
źródło
Inne podejście:
Wszystkie dotychczasowe odpowiedzi, w tym najpopularniejsza odpowiedź @Dan , odnoszą się do pomysłu korzystania z Dropbox w celu scentralizowania wspólnego repozytorium zamiast korzystania z usługi skoncentrowanej na git takich jak github, bitbucket itp.
Ponieważ jednak oryginalne pytanie nie precyzuje, co tak naprawdę oznacza „Git i Dropbox razem”, przyjmijmy inne podejście: „Używanie Dropbox do synchronizacji tylko drzewa roboczego”.
Poradnik ma następujące kroki:
wewnątrz katalogu projektu tworzy się pusty
.git
katalog (np.mkdir -p myproject/.git
)zsynchronizuj
.git
katalog w Dropbox. Jeśli używasz aplikacji Dropbox: przejdź do Preferencji, Synchronizuj i „wybierz foldery do synchronizacji”, gdzie.git
katalog musi zostać niezaznaczony. Spowoduje to usunięcie.git
katalogu.uruchom
git init
w katalogu projektuDziała to również, jeśli
.git
już istnieje, wykonaj tylko krok 2. Dropbox zachowa kopię plików git na stronie internetowej.Krok 2 spowoduje, że Dropbox nie zsynchronizuje struktury systemu git, co jest pożądanym rezultatem tego podejścia.
Dlaczego warto korzystać z tego podejścia?
Nieprzesłane zmiany będą miały kopię zapasową Dropbox i zostaną zsynchronizowane na różnych urządzeniach.
W przypadku, gdy Dropbox coś spieprzy podczas synchronizacji między urządzeniami,
git status
igit diff
przydadzą się to rozwiązać.Oszczędza miejsce na koncie Dropbox (cała historia nie będzie tam przechowywana)
Pozwala to uniknąć obaw wyrażonych przez @dubek i @Ates w komentarzach do odpowiedzi @ Dan oraz obaw przez @clu w innej odpowiedzi .
Istnienie pilota gdzieś indziej (github itp.) Będzie działało dobrze z tym podejściem.
Praca w różnych branżach wiąże się z pewnymi problemami, którymi należy się zająć:
Jednym z potencjalnych problemów jest synchronizacja przez Dropbox (niepotrzebnie?) Potencjalnie wielu plików podczas sprawdzania różnych gałęzi.
Jeśli dwa lub więcej zsynchronizowanych urządzeń Dropbox ma wyewidencjonowane różne gałęzie, niezatwierdzone zmiany na obu urządzeniach mogą zostać utracone,
Jednym ze sposobów obejścia tych problemów jest
git worktree
przechowywanie transakcji w oddziałach w osobnych katalogach.źródło
xattr -w com.dropbox.ignored 1 /path/to/somewhere
.W przypadku moich 2 centów Dropbox robi tylko użytek osobisty, gdzie nie chcesz zawracać sobie głowy centralnym hostem repo. W przypadku jakiegokolwiek rozwoju zawodowego prawdopodobnie stworzysz więcej problemów niż do rozwiązania, jak już wspomniano kilka razy w wątku, Dropbox nie jest przeznaczony do tego przypadku użycia. To powiedziawszy, całkowicie bezpieczną metodą zrzucania repozytoriów na Dropbox bez żadnych wtyczek i narzędzi innych firm jest użycie pakietów. Mam następujące aliasy,
.gitconfig
aby zapisać pisanie:Przykład:
źródło
Napotkałem podobny problem i stworzyłem mały skrypt dla tego samego. Chodzi o to, aby używać Dropbox z Git tak prosto, jak to możliwe. Obecnie szybko zaimplementowałem kod Ruby i wkrótce dodam więcej.
Skrypt jest dostępny pod adresem
https://github.com/nuttylabs/box-git
.źródło
Bez korzystania z narzędzi integracji innych firm mógłbym nieco poprawić ten stan i korzystać z DropBox i innych podobnych usług dyskowych w chmurze, takich jak SpiderOak z Git.
Celem jest uniknięcie synchronizacji w środku tych modyfikacji plików, ponieważ może przesłać stan częściowy, a następnie pobrać go z powrotem, całkowicie niszcząc twój stan git.
Aby uniknąć tego problemu:
git bundle create my_repo.git --all
.Nie jest idealny, ponieważ nie ma gwarancji, że nie zepsuje ponownie stanu git, ale pomaga i na razie nie mam problemu.
źródło
W systemie MacOS możesz także zatrzymać Dropbox, wprowadzić zmiany, a następnie ponownie uruchomić Dropbox. Korzystam z następującej kombinacji i jestem z tego całkiem zadowolony:
Zarówno (lokalny katalog projektu zarządzanego przez git, jak i zdalne repozytorium git znajdujące się na Dropbox) uruchom następujące polecenie, aby wyłączyć automatyczne pakowanie (co jest głównym problemem z synchronizacją Dropbox)
Następnie od czasu do czasu kompresuj repozytoria z wyłączonym Dropbox. Na przykład robię następujące rzeczy w moim skrypcie bash-build-script, kiedy robię nowe wersje moich aplikacji.
źródło