Frage Git und Dropbox effektiv zusammen verwenden?


Wie verwende ich? Git und Dropbox zusammen effektiv?


1062
2017-12-25 08:41


Ursprung


Antworten:


Ich denke, Git auf Dropbox ist 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 blosses Repository verwende. Da ich es nicht auf einem öffentlichen Dienst hosten möchte und ich keinen Zugriff auf einen Server habe, den ich immer ansprechen kann, kümmert sich Dropbox darum, indem es (sehr schnell) im Hintergrund synchronisiert.

Setup ist etwa so:

~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/git

~/Dropbox/git $ git init --bare project.git
~/Dropbox/git $ cd ~/project

~/project $ git remote add origin ~/Dropbox/git/project.git
~/project $ git push -u origin master

Von dort können Sie einfach klonen ~/Dropbox/git/project.git die Sie mit Ihrem Dropbox-Konto verknüpft haben (oder dieses Verzeichnis mit Personen geteilt haben), können Sie alle normalen Git-Vorgänge ausführen und sie werden automatisch mit allen Ihren anderen Maschinen synchronisiert.

Ich habe einen Blogpost geschrieben, Auf Versionskontrolle, (alter Link  tot) auf meiner Argumentation und wie ich meine Umgebung aufstelle, basiert sie auf meiner Ruby auf Schienen Entwicklungserfahrung, aber es kann wirklich auf alles angewendet werden.


1350
2017-12-25 17:10



Der richtige Weg dazu ist die Verwendung von git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox

Das Erstellen eines eigenen leeren Repos in Dropbox verursacht viele Probleme. Anish (der Schöpfer der Bibliothek) erklärt es am besten:

Die Ursache für diese Probleme ist der Dropbox-Desktop   Client ist für das Synchronisieren von Dateien gedacht, nicht für Git-Repositories. Ohne   spezielle Handhabung für Git-Repositories, es bleibt nicht dasselbe   garantiert wie Git. Operationen auf dem Remote-Repository sind nicht mehr   atomare und gleichzeitige Operationen oder unglückliches Timing mit   Synchronisierung kann zu einem beschädigten Repository führen.

Herkömmliche Git-Fernbedienungen führen Code auf der Serverseite aus, damit dies funktioniert   richtig, aber wir können das nicht tun.

Lösung: Es ist möglich, dies richtig zu lösen. Es ist möglich zu verwenden   Git mit Dropbox und haben die gleiche Sicherheit und Konsistenz garantiert   als eine traditionelle Git Remote, auch wenn es mehrere Benutzer und   gleichzeitige Operationen!

Für einen Benutzer ist es so einfach wie mit git-remote-dropbox, einer Git-Fernbedienung   Helfer, der als transparente bidirektionale Brücke zwischen Git und   Dropbox und erhält alle Garantien einer traditionellen Git-Fernbedienung.   Es ist sogar sicher mit freigegebenen Ordnern zu verwenden, so dass es für verwendet werden kann   Zusammenarbeit (yay unbegrenzte private Repos mit unbegrenzten   Mitarbeiter!).

Mit dem Remote-Helfer ist es möglich, Dropbox als Git-Fernbedienung zu verwenden   und weiterhin alle regulären Git-Befehle wie git clone, git verwenden   ziehen, und git push, und alles wird wie erwartet funktionieren.


86
2017-08-25 23:25



Diese Antwort basiert auf Mercurial Erfahrung, nicht Git, aber diese Erfahrung sagt mit Dropbox diese Art fragt nach beschädigten Repositories, wenn es sogar eine Chance gibt, dass Sie das gleiche Dropbox-basierte Repository von verschiedenen Maschinen zu verschiedenen Zeiten aktualisieren (Mac, Unix, Windows in meinem Fall) ).

Ich habe keine vollständige Liste der Dinge, die schiefgehen können, aber hier ist ein spezifisches Beispiel, das mich gebissen hat. Jede Maschine hat ihre eigene Vorstellung von Zeilenendenzeichen und wie Groß- / Kleinbuchstaben in Dateinamen gehandhabt werden. Dropbox und Git / Mercurial handhaben das etwas anders (ich erinnere mich nicht an die genauen Unterschiede). Wenn Dropbox das Repository hinter Git / Mercurial zurück aktualisiert, Presto, gebrochene Repository. Dies geschieht sofort und unsichtbar, sodass Sie nicht einmal wissen, dass Ihr Repository beschädigt ist, bis Sie versuchen, etwas davon wiederherzustellen.

Nachdem ich auf diese Weise aus einem Schlamassel heraus gegraben habe, habe ich das folgende Rezept mit großem Erfolg und ohne Anzeichen von Problemen verwendet. Verschieben Sie Ihr Repository einfach aus Dropbox. Verwenden Sie Dropbox für alles andere; Dokumentation, JAR-Dateienalles was du willst. Und benutzen GitHub (Git) oder Bit Bucket (Mercurial), um das Repository selbst zu verwalten. Beide sind kostenlos, das trägt nichts zu den Kosten bei und jedes Werkzeug spielt jetzt seine Stärken aus.

Das Ausführen von Git / Mercurial über Dropbox fügt nichts als Risiko hinzu. Tu es nicht.


85
2018-05-01 20:48



In Bezug auf kleine Teams mit Dropbox:

Wenn jeder Entwickler sein eigenes beschreibbares leeres Repository auf Dropbox hat, was nur ziehen zu anderen Entwicklern, dann erleichtert das Code-Sharing ohne Risiko der Korruption!

Wenn Sie eine zentralisierte "Hauptleitung" möchten, können Sie einen Entwickler alle Push-Vorgänge von seinem eigenen Repo verwalten lassen.


16
2017-12-04 12:27



Ich wollte nicht alle meine Projekte unter ein Git-Repository stellen, noch wollte ich diesen Code für jedes einzelne Projekt ausführen, also habe ich ein Bash Skript, das den Prozess automatisieren wird. Sie können es in einem oder mehreren Verzeichnissen verwenden, damit es den Code in diesem Post für Sie oder für mehrere Projekte gleichzeitig ausführen kann.

#!/bin/sh
# Script by Eli Delventhal
# Creates Git projects for file folders by making the origin Dropbox. You will need to install Dropbox for this to work.

# Not enough parameters, show help.
if [ $# -lt 1 ] ; then

cat<<HELP
projects_to_git.sh -- Takes a project folder and creates a Git repository for it on Dropbox

USAGE:
    ./projects_to_git.sh file1 file2 ..

EXAMPLES:
    ./projects_to_git.sh path/to/MyProjectDir
        Creates a git project called MyProjectDir on Dropbox

    ./projects_to_git.sh path/to/workspace/*
        Creates a git project on Dropbox for every folder contained within the workspace directory, where the project name matches the folder name

HELP
    exit 0
fi

# We have enough parameters, so let's actually do this thing.

START_DIR=$(pwd)

# Make sure we have a connection to Dropbox
cd ~
if [ -s 'Dropbox' ] ; then
    echo "Found Dropbox directory."
    cd Dropbox
    if [ -s 'git' ] ; then
        echo "    Dropbox Git directory found."
    else
        echo "    Dropbox Git directory created."
        mkdir git
    fi
else
    echo "You do not have a Dropbox folder at ~/Dropbox! Install Dropbox. Aborting..."
    exit 0
fi

# Process all directories matching the passed parameters.
echo "Starting processing for all files..."
for PROJ in $*
do
    if [ -d $PROJ ] ; then
        PROJNAME=$(basename $PROJ)
        echo "  Processing $PROJNAME..."

        # Enable Git with this project.
        cd $PROJ
        if [ -s '.git' ] ; then
            echo "    $PROJNAME is already a Git repository, ignoring..."
        else
            echo "    Initializing Git for $PROJNAME..."
            git init -q
            git add .
            git commit -m "Initial creation of project." -q

            # Make the origin Dropbox.

            cd ~/Dropbox/git
            if [ -s $PROJNAME ] ; then
                echo "    Warning! $PROJNAME already exists in Git! Ignoring..."
            else
                echo "    Putting $PROJNAME project on Dropbox..."
                mkdir $PROJNAME
                cd $PROJNAME
                git init -q --bare
            fi

            # Link the project to the origin
            echo "    Copying local $PROJNAME to Dropbox..."
            cd $PROJ
            git remote add origin "~/Dropbox/git/$PROJNAME"
            git push -q origin master
            git branch --set-upstream master origin/master
        fi
    fi
done

echo "Done processing all files."
cd $START_DIR

16
2017-12-02 18:37



Ich denke nicht, dass die Verwendung von Git und Dropbox der richtige Weg ist ... Denken Sie nur an die Eigenschaften beider:

Git:

  • Ermöglicht Ihnen ein zentrales Repository
  • Ermöglicht Ihnen, Ihr eigenes Repository mit Ihren eigenen Änderungen zu haben
  • Ermöglicht das Senden und Empfangen von Änderungen vom zentralen Repository
  • Ermöglicht mehreren Personen, die gleichen Dateien zu ändern, und sie führt sie zusammen oder fordert Sie auf, sie zusammenzuführen, wenn es nicht möglich ist
  • Bietet Web- und Desktop-Clients Zugriff auf das zentrale Repository

Dropbox:

  • Hält alles in einem zentralen Repository
  • Ermöglicht Ihnen, eigene Versionen der Dateien auf dem Server zu haben
  • Erzwingt das Senden und Empfangen von Änderungen vom zentralen Repository
  • Wenn mehrere Personen die gleichen Dateien ändern, wird die erste festgeschriebene Datei durch spätere Festschreibung ersetzt, und es tritt keine Zusammenführung auf, was mühsam ist (und definitiv der größte Nachteil).
  • Bietet Web- und Desktop-Clients Zugriff auf das zentrale Repository.

Und wenn Sie sich Sorgen machen, einige Ihrer Dateien zu teilen, warum verschlüsseln Sie sie dann nicht? Und dann könnten Sie den größten Vorteil von Dropbox für Git bekommen, nämlich öffentliche und private Dateien zu haben ...


15
2018-05-26 09:50



Es ist jetzt 2015, und seit drei Tagen, a neues Werkzeug beyogen auf Dropbox API v2 wurde erstellt, um git sicher in Dropbox zu verwenden. Es funktioniert gegen die API und nicht über den Desktop-Client und verarbeitet mehrere gleichzeitige Push-Vorgänge für ein Repository, das in einem freigegebenen Ordner gehostet wird.

Einmal konfiguriert, erlaubt es einem, eine Git-Fernbedienung genau wie jede andere Git-Fernbedienung einzurichten.

git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"

14
2017-08-23 07:31



Ich benutze Mercurial (oder Git) + TrueCrypt + Dropbox für verschlüsselt Fernbedienung Sicherungen.

Die coolste Sache ist, dass Dropbox NICHT den gesamten TrueCrypt-Container synchronisiert, wenn Sie einen kleinen Teil Ihres Codes ändern. Die Synchronisierungszeit ist ungefähr proportional zur Anzahl der Änderungen. Obwohl es verschlüsselt ist, macht die Kombination von TrueCrypt + Dropbox eine ausgezeichnete Verwendung von Blockchiffren + Blocklevel-Synchronisierung.

Zweitens, ein monolithisch verschlüsselter Container erhöht nicht nur die Sicherheit, sondern verringert auch die Wahrscheinlichkeit eines Repository Korruption .

Vorsicht: Allerdings müssen Sie sehr vorsichtig sein, wenn der Container nicht montiert wird, während Dropbox läuft. Es kann auch ein Problem sein, Konflikte zu lösen, wenn zwei verschiedene Clients verschiedene Versionen des Containers einchecken. Es ist also praktisch nur für eine einzelne Person, die es für Backups verwendet, nicht für ein Team.

Konfiguration:

  • Erstellen Sie einen Truecrypt-Container (mehrere Gigabyte sind in Ordnung)
  • Deaktivieren Sie unter Truecrypt-Voreinstellungen preserve modification timestamp*.
  • Erstellen Sie ein Repo wie oben erwähnt von Dan ( https://stackoverflow.com/a/1961515/781695 )

Verwendung:

  • Beenden Sie Dropbox
  • Mounten Sie den Container, schieben Sie Ihre Änderungen, unmounten
  • Führen Sie die Dropbox aus

P.S. Deaktivieren Sie die preserve modification timestamp teilt Dropbox mit, dass die Datei geändert wurde und synchronisiert werden sollte. Beachten Sie, dass das Mounten des Containers den Zeitstempel ändert, auch wenn Sie keine Datei darin ändern. Wenn Sie das nicht möchten, mounten Sie einfach das Volume als read-only


8
2018-03-03 16:18



Ich habe Mercurial auf die empfohlene Art und Weise verwendet und fordere Sie auf, vorsichtig zu sein, vor allem, wenn sich die Maschinen unterscheiden. Die Dropbox-Foren sind voll von Beschwerden über mysteriöse Dateinamensprobleme, die spontan auftauchen. Hg (und ich nehme Git an) wird sich während routinemäßiger Checkins nicht bemerkbar machen oder beschweren und Sie werden nur von der Korruption erfahren, wenn sie sich über ein korruptes Repo beschwert, wenn Sie versuchen, es wirklich zu benutzen. Schlechte Nachrichten. Ich wünschte, ich könnte genauer auf das Problem und seine Problemumgehungen eingehen; Ich versuche immer noch, mich selbst aus diesem Chaos zu befreien.


6
2018-03-04 11:42