git
version-control
cloud
dropbox
n1kh1lp
quelle
quelle
Antworten:
Ich finde Git on Dropbox großartig. Ich benutze es die ganze Zeit. Ich habe mehrere Computer (zwei zu Hause und einen bei der Arbeit), die ich Dropbox als zentrales reines Repository verwende. Da ich es nicht in einem öffentlichen Dienst hosten möchte und keinen Zugriff auf einen Server habe, auf den ich immer ssh kann, kümmert sich Dropbox darum, indem es (sehr schnell) im Hintergrund synchronisiert.
Setup ist ungefähr so:
Von dort aus können Sie einfach klonen,
~/Dropbox/git/project.git
dass Sie Ihrem Dropbox-Konto zugeordnet sind (oder dieses Verzeichnis für andere Personen freigegeben haben). Sie können alle normalen Git-Vorgänge ausführen und diese werden automatisch mit all Ihren anderen Computern synchronisiert.Ich habe einen Blog-Beitrag über die Versionskontrolle ( alter Link tot ) über meine Überlegungen und die Einrichtung meiner Umgebung geschrieben. Er basiert auf meiner Erfahrung mit der Entwicklung von Ruby on Rails , kann aber wirklich auf alles angewendet werden.
quelle
Der richtige Weg, dies zu tun, ist die Verwendung von git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox
Das Erstellen eines eigenen Repos in Dropbox verursacht viele Probleme. Anish (der Schöpfer der Bibliothek) erklärt es am besten :
quelle
Diese Antwort basiert auf der Mercurial- Erfahrung, nicht auf Git. Diese Erfahrung besagt jedoch, dass bei der Verwendung von Dropbox auf diese Weise nach beschädigten Repositorys gefragt wird, wenn überhaupt die Möglichkeit besteht, dass Sie dasselbe Dropbox-basierte Repository zu verschiedenen Zeiten von verschiedenen Computern aus aktualisieren (Mac, Unix, Windows in meinem Fall).
Ich habe keine vollständige Liste der Dinge, die schief gehen können, aber hier ist ein konkretes Beispiel, das mich gebissen hat. Jede Maschine hat ihre eigene Vorstellung von Zeilenendezeichen und wie Groß- / Kleinbuchstaben in Dateinamen behandelt werden. Dropbox und Git / Mercurial behandeln dies etwas anders (ich erinnere mich nicht an die genauen Unterschiede). Wenn Dropbox das Repository hinter Git / Mercurials Rücken aktualisiert, ist das Repository bereits beschädigt. Dies geschieht sofort und unsichtbar, sodass Sie nicht einmal wissen, dass Ihr Repository beschädigt ist, bis Sie versuchen, etwas daraus wiederherzustellen.
Nachdem ich aus einem Durcheinander herausgearbeitet habe, habe ich das folgende Rezept mit großem Erfolg und ohne Anzeichen von Problemen verwendet. Verschieben Sie einfach Ihr Repository aus Dropbox. Verwenden Sie Dropbox für alles andere. Dokumentation, JAR-Dateien , alles was Sie wollen. Verwenden Sie GitHub (Git) oder Bitbucket (Mercurial), um das Repository selbst zu verwalten. Beide sind kostenlos, was die Kosten nicht erhöht, und jedes Werkzeug spielt jetzt seine Stärken aus.
Das Ausführen von Git / Mercurial auf Dropbox fügt nichts außer dem Risiko hinzu. Tu es nicht.
quelle
In Bezug auf kleine Teams, die Dropbox verwenden:
Wenn jeder Entwickler sein eigenes beschreibbares Bare-Repository auf Dropbox hat, das nur für andere Entwickler verfügbar ist, erleichtert dies die gemeinsame Nutzung von Code ohne das Risiko einer Beschädigung!
Wenn Sie dann eine zentralisierte "Hauptleitung" wünschen, können Sie einen Entwickler alle Pushs von seinem eigenen Repo aus verwalten lassen.
quelle
Ich wollte nicht alle meine Projekte unter einem Git-Repository ablegen, noch wollte ich diesen Code für jedes einzelne Projekt ausführen, also habe ich ein Bash- Skript erstellt, das den Prozess automatisiert. Sie können es in einem oder mehreren Verzeichnissen verwenden, sodass es den Code in diesem Beitrag für Sie oder für mehrere Projekte gleichzeitig ausführen kann.
quelle
Ich denke nicht, dass die Verwendung von Git und Dropbox der richtige Weg ist ... Denken Sie nur an die Funktionen von beiden:
Git:
Dropbox:
Und wenn Sie Bedenken haben, einige Ihrer Dateien freizugeben, warum sollten Sie sie nicht verschlüsseln? Und dann könnten Sie den größten Vorteil von Dropbox für Git nutzen, nämlich öffentliche und private Dateien zu haben ...
quelle
Es ist jetzt 2015 und seit drei Tagen wurde ein neues Tool basierend auf Dropbox API v2 erstellt, um git auf Dropbox sicher zu verwenden. Es funktioniert gegen die API, anstatt den Desktop-Client zu verwenden, und verarbeitet mehrere gleichzeitige Pushs in ein Repository, das in einem freigegebenen Ordner gehostet wird, korrekt.
Einmal konfiguriert, kann man eine Git-Fernbedienung genau wie jede andere Git-Fernbedienung einrichten.
quelle
Ich verwende Mercurial (oder Git) + TrueCrypt + Dropbox für verschlüsselte Remote- Backups .
Das Coolste ist, dass Dropbox NICHT den gesamten TrueCrypt-Container synchronisiert, wenn Sie einen kleinen Teil Ihres Codes ändern. Die Synchronisationszeit ist ungefähr proportional zur Anzahl der Änderungen. Obwohl es verschlüsselt ist, nutzt die Kombination von TrueCrypt + Dropbox die Blockverschlüsselung + Blockebenensynchronisation hervorragend.
Zweitens erhöht ein monolithisch verschlüsselter Container nicht nur die Sicherheit, sondern verringert auch die Wahrscheinlichkeit einer Beschädigung des Repositorys .
Achtung: Sie müssen jedoch sehr vorsichtig sein, damit der Container nicht montiert wird, während Dropbox ausgeführt wird. Es kann auch schwierig sein, Konflikte zu lösen, wenn zwei verschiedene Clients unterschiedliche Versionen in den Container einchecken. Es ist also nur für eine einzelne Person praktisch, die es für Backups verwendet, nicht für ein Team.
Installieren:
preserve modification timestamp
*.Verwendungszweck:
PS Deaktivieren Sie das Kontrollkästchen "Tells"
preserve modification timestamp
, dass die Datei geändert wurde und synchronisiert werden soll. Beachten Sie, dass durch das Mounten des Containers der Zeitstempel geändert wird, auch wenn Sie keine Datei darin ändern. Wenn Sie dies nicht möchten, mounten Sie das Volume einfach alsread-only
quelle
Ich liebe die Antwort von Dan McNevin! Ich verwende jetzt auch Git und Dropbox zusammen und verwende mehrere Aliase in meinem .bash_profile, sodass mein Workflow folgendermaßen aussieht:
Das sind meine Aliase:
quelle
Wir verwenden diese Methode (Erstellen eines Bare-Repositorys in Dropbox) für einen Freigabeordner .
Eine kleine Gruppe von Entwicklern kann aus diesem nackten synchronisierten Repository einen lokalen Klon erstellen. Sobald die Arbeitseinheit fertig ist, kehren wir zum Ursprung zurück.
Eine Sache, die mir fehlt, ist eine gute Möglichkeit, eine E-Mail mit den Änderungssatzinformationen zu senden, sobald ein Push-to-Origin erfolgt. Wir verwenden Google Wave, um Änderungen manuell zu verfolgen.
quelle
Ich habe Mercurial in der empfohlenen Weise verwendet und fordere Sie auf, vorsichtig zu sein, insbesondere wenn sich eine der Maschinen unterscheidet. Die Dropbox-Foren sind voll von Beschwerden über mysteriöse Probleme mit Dateinamen, die spontan auftauchen. Hg (und ich nehme an, Git) wird es beim routinemäßigen Einchecken nicht bemerken oder sich beschweren, und Sie werden nur dann von der Beschädigung hören, wenn es sich über ein beschädigtes Repo beschwert, wenn Sie versuchen, es wirklich zu verwenden. Schlechte Nachrichten. Ich wünschte, ich könnte genauer auf das Problem und seine Problemumgehungen eingehen. Ich versuche immer noch, selbst aus diesem Chaos herauszukommen.
quelle
Es gibt auch ein Open-Source-Projekt (eine Sammlung plattformübergreifender Skripte [Linux, Mac, Win]), das alle Details der Repository-Verwaltung mit einer Handvoll (3-4) Befehlen ausführt.
https://github.com/karalabe/gitbox/wiki
Beispielnutzung ist:
Nach welcher normalen Git-Nutzung:
Überprüfen Sie das Projekt-Wiki und die Handbücher auf vollständige Befehlsreferenzen und Tutorials.
quelle
Ich speichere meine Nicht-Github-Repos auf Dropbox. Eine Einschränkung, auf die ich stieß, war die Synchronisierung nach einer Neuinstallation. Dropbox lädt zuerst die kleinsten Dateien herunter, bevor Sie zu den größeren wechseln. Kein Problem, wenn Sie nachts anfangen und nach dem Wochenende wiederkommen :-)
Mein Thread - http://forums.dropbox.com/topic.php?id=29984&replies=6
quelle
Jetzt im Jahr 2014 benutze ich Git und Dropbox seit ungefähr anderthalb Jahren ohne Probleme. Einige Punkte:
git push
wird in ein Remote-Repository verschoben, sodass ich es problemlos wiederherstellen kann, falls es jemals beschädigt wird.C:\Users
mit ,mklink /D link target
da einige Bibliotheken zu absoluten Positionen hingewiesen wurden.quelle
Ich mag die am besten gewählte Antwort von Dan McNevin. Am Ende habe ich die Sequenz der Git-Befehle zu oft ausgeführt und beschlossen, ein Skript zu erstellen. Hier ist es also:
Das Skript benötigt nur einen Projektnamen. Es generiert ein Git-Repository
~/Dropbox/git/
unter dem angegebenen Namen und überträgt den gesamten Inhalt des aktuellen Verzeichnisses in den neu erstellten Ursprungs-Master-Zweig. Wenn mehr als ein Projektname angegeben wird, wird das am weitesten rechts stehende Argument für den Projektnamen verwendet.Optional gibt das Befehlsargument -r den Remote-Zweig an, der an den Ursprungsmaster gesendet wird. Der Speicherort des Projektursprungsmasters kann auch mit dem Argument -m angegeben werden. Eine Standard-Gitignore-Datei wird ebenfalls im Remote-Zweigverzeichnis abgelegt. Die Standardeinstellungen für das Verzeichnis und die Gitignore-Datei werden im Skript angegeben.
quelle
Ein anderer Ansatz:
Alle bisherigen Antworten, einschließlich der beliebtesten @ Dan-Antwort , beziehen sich auf die Idee, Dropbox zur Zentralisierung eines gemeinsam genutzten Repositorys zu verwenden, anstatt einen Dienst zu verwenden, der sich auf Git wie Github, Bitbucket usw. konzentriert.
Da in der ursprünglichen Frage jedoch nicht angegeben ist, was die effektive Verwendung von "Git und Dropbox zusammen" wirklich bedeutet, arbeiten wir an einem anderen Ansatz: "Verwenden von Dropbox zum Synchronisieren nur des Arbeitsbaums".
Das How-to hat folgende Schritte:
innerhalb des Projektverzeichnis erstellt man ein leeres
.git
Verzeichnis (zBmkdir -p myproject/.git
)Heben Sie die Synchronisierung des
.git
Verzeichnisses in Dropbox auf. Wenn Sie die Dropbox-App verwenden: Gehen Sie zu Einstellungen, Synchronisieren und wählen Sie "Zu synchronisierende Ordner auswählen", wo das.git
Verzeichnis nicht markiert werden muss. Dadurch wird das.git
Verzeichnis entfernt.git init
im Projektverzeichnis ausführenEs funktioniert auch, wenn das
.git
bereits vorhanden ist. Führen Sie dann nur Schritt 2 aus. Dropbox behält jedoch eine Kopie der Git-Dateien auf der Website.Schritt 2 führt dazu, dass Dropbox die Git-Systemstruktur nicht synchronisiert. Dies ist das gewünschte Ergebnis für diesen Ansatz.
Warum sollte man diesen Ansatz verwenden?
Die noch nicht gepushen Änderungen haben eine Dropbox-Sicherung und werden geräteübergreifend synchronisiert.
Für den Fall, dass Dropbox beim Synchronisieren zwischen Geräten etwas vermasselt
git status
undgit diff
praktisch ist, um die Dinge zu klären.Es spart Platz im Dropbox-Konto (der gesamte Verlauf wird dort nicht gespeichert)
Es vermeidet die Bedenken von @dubek und @Ates in den Kommentaren zu @ Dans Antwort und die Bedenken von @clu in einer anderen Antwort .
Die Existenz einer Fernbedienung an einem anderen Ort (Github usw.) funktioniert mit diesem Ansatz einwandfrei.
Die Arbeit an verschiedenen Branchen bringt einige Probleme mit sich, die behoben werden müssen:
Ein potenzielles Problem besteht darin, dass Dropbox (unnötig?) Potenziell viele Dateien synchronisiert, wenn verschiedene Zweige ausgecheckt werden.
Wenn bei zwei oder mehr mit Dropbox synchronisierten Geräten unterschiedliche Zweige ausgecheckt sind, können nicht festgeschriebene Änderungen an beiden Geräten verloren gehen.
Eine Möglichkeit, diese Probleme zu umgehen
git worktree
, besteht darin, Zweigstellen-Checkouts in separaten Verzeichnissen zu speichern.quelle
xattr -w com.dropbox.ignored 1 /path/to/somewhere
.Für meine 2 Cent macht Dropbox nur Sinn für den persönlichen Gebrauch, wenn Sie sich nicht die Mühe machen möchten, einen zentralen Repo-Host zu bekommen. Für jede berufliche Entwicklung werden Sie wahrscheinlich mehr Probleme verursachen als lösen, wie bereits mehrfach im Thread erwähnt. Dropbox ist nicht für diesen Anwendungsfall konzipiert. Eine absolut sichere Methode zum Speichern von Repositorys auf Dropbox ohne Plugins oder Tools von Drittanbietern ist die Verwendung von Bundles. Ich habe die folgenden Aliase in meinem
.gitconfig
, um die Eingabe zu speichern:Beispiel:
quelle
Ich hatte ein ähnliches Problem und habe ein kleines Skript dafür erstellt. Die Idee ist, Dropbox mit Git so einfach wie möglich zu verwenden. Derzeit habe ich Ruby- Code schnell implementiert und werde bald weitere hinzufügen.
Das Skript ist unter zugänglich
https://github.com/nuttylabs/box-git
.quelle
Ohne Integrationstools von Drittanbietern könnte ich den Zustand ein wenig verbessern und DropBox und andere ähnliche Cloud-Festplattendienste wie SpiderOak mit Git verwenden.
Das Ziel ist es, die Synchronisation in der Mitte dieser Dateimodifikationen zu vermeiden, da ein Teilstatus hochgeladen und dann wieder heruntergeladen werden kann, wodurch Ihr Git-Status vollständig beschädigt wird.
Um dieses Problem zu vermeiden, habe ich:
git bundle create my_repo.git --all
.Es ist nicht perfekt, da es keine Garantie gibt, dass es den Git-Zustand nicht wieder durcheinander bringt, aber es hilft und für den Moment habe ich kein Problem bekommen.
quelle
Unter MacOS können Sie Dropbox auch einfach stoppen, Ihre Änderungen vornehmen und Dropbox neu starten. Ich benutze die folgende Kombination und bin sehr zufrieden damit:
Führen Sie in beiden Fällen (Ihrem lokalen git-verwalteten Projektverzeichnis und Ihrem Remote-git-Repository in Dropbox) den folgenden Befehl aus, um das automatische Packen zu deaktivieren (was das Hauptproblem bei der Dropbox-Synchronisierung ist).
Komprimieren Sie dann von Zeit zu Zeit die Repositorys mit deaktivierter Dropbox. Zum Beispiel mache ich in meinem Bash-Build-Skript Folgendes, wenn ich neue Versionen meiner Apps erstelle.
quelle