1136 votes

L'utilisation de Git et Dropbox efficacement ensemble?

Comment puis-je utiliser Git et Dropbox efficacement ensemble?

1408voto

Dan McNevin Points 15319

Je pense que Git sur Dropbox est grande. Je l'utilise tout le temps. J'ai plusieurs ordinateurs (deux à la maison et au travail) que j'utilise Dropbox comme une centrale de dépôt nu. Depuis que je ne veux pas l'héberger sur un service public, et je n'ai pas accès à un serveur que je peux toujours ssh, Dropbox prend soin de ce par la synchronisation (très rapidement) à l'arrière-plan.

L'installation est quelque chose comme ceci:

~/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

À partir de là, vous pouvez simplement clone ~/Dropbox/git/project.git que vous avez associés à votre compte Dropbox (ou d'avoir partagé ce répertoire avec les gens), vous pouvez faire tout à la normale Git opérations et ils seront synchronisées sur tous vos autres machines automatiquement.

J'ai écrit un post de blog, Sur le Contrôle de Version, (lien mort) sur mon raisonnement et comment j'ai configurer mon environnement, c'est basé sur mon Ruby on Rails expérience de développement, mais il peut être appliqué à n'importe quoi, vraiment.

91voto

Bradjcox Points 702

Cette réponse est fondée sur Mercurial expérience, pas de Git, mais cette expérience indique à l'aide de Dropbox de cette façon est de demander pour corrompre les référentiels si il ya même une chance que vous aurez de la mise à jour de la même Dropbox-référentiel à partir de machines différentes à différents moments (Mac, Unix, Windows dans mon cas).

Je n'ai pas une liste complète des choses qui peuvent mal se passer, mais voici un exemple qui m'a mordu. Chaque machine a sa propre idée de la ligne de fin de caractères et comment les caractères majuscules/minuscules sont traitées dans les noms de fichier. Dropbox et Git/Mercurial gérer cela de manière légèrement différente (je ne me souviens pas les différences exactes). Si Dropbox met à jour le référentiel derrière Git/Mercurial est de retour, presto, cassé référentiel. Cela se produit immédiatement et de manière invisible, de sorte que vous ne connaissez même pas votre référentiel est interrompue jusqu'à ce que vous essayez de récupérer quelque chose.

Après creusement d'un gâchis faire les choses de cette façon, j'ai été en utilisant la recette suivante, avec grand succès, et aucun signe de problèmes. Il suffit de déplacer votre référentiel de Dropbox. Utiliser Dropbox pour tout le reste, la documentation, les fichiers JAR, tout ce que vous s'il vous plaît. Et l'utilisation de GitHub (Git) ou Bitbucket (Mercurial) pour gérer le référentiel lui-même. Les deux sont gratuits, donc ce n'ajoute rien à l'coûts, et chaque outil joue désormais à ses forces.

L'exécution de la commande Git/Mercurial sur le dessus de Dropbox n'ajoute rien à l'exception du risque. Ne pas le faire.

17voto

Eli Points 1997

Je ne voulais pas mettre tous mes projets en vertu d'un dépôt Git, et je n'ai envie d'y aller et d'exécuter ce code pour chaque projet, j'ai donc fait un Bash script qui permettra d'automatiser le processus. Vous pouvez l'utiliser sur un ou plusieurs répertoires -, donc il peut faire le code dans ce post pour vous ou il peut le faire sur plusieurs projets à la fois.

#!/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

16voto

teh_senaus Points 444

En ce qui concerne les petites équipes à l'aide de Dropbox:

Si chaque développeur dispose de son propre écriture dépôt nu sur Dropbox, qui est de tirer seulement à d'autres développeurs, alors cela facilite le partage de code avec aucun risque de corruption!

Alors si vous voulez une centralisation de la 'principale', vous pouvez avoir un développeur de gérer tous les pousse à partir de leur propre repo.

15voto

Coyote21 Points 271

Je ne pense pas que l'utilisation de Git et Dropbox est le chemin à parcourir... Juste penser à la fois les fonctions de:

Git:

  • Vous permet d'avoir un référentiel central
  • Vous permet d'avoir votre propre espace de stockage avec vos propres modifications
  • Vous permet d'envoyer et de recevoir des modifications de la base centrale
  • Permet à plusieurs personnes de modifier les mêmes fichiers et leur fusionne ou vous demande de fusion, si elle ne peut pas le faire
  • A web et les clients de bureau pour permettre l'accès à la base centrale de

Dropbox:

  • Maintient le tout dans un référentiel central
  • Vous permet d'avoir votre propre version des fichiers dans le serveur
  • Les Forces d'envoyer et de recevoir des modifications de la base centrale
  • Si plusieurs personnes de modifier les mêmes fichiers, le premier fichier commis est remplacé plus tard s'engage, et pas de fusion se produit, ce qui est gênant (et certainement son plus gros désavantage)
  • A web et les clients de bureau pour permettre l'accès à un référentiel central.

Et si vous êtes inquiet à partager certains de vos fichiers, pourquoi ne pas le chiffrement? Et puis vous pouvez obtenir le plus grand avantage de Dropbox pour Git, c'est-à-public et privé des fichiers...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X