git
version-control
cloud
dropbox
n1kh1lp
la source
la source
Réponses:
Je pense que Git sur Dropbox est génial. Je l'utilise tout le temps. J'ai plusieurs ordinateurs (deux à la maison et un au travail) que j'utilise Dropbox comme référentiel nu central. Comme je ne veux pas l'héberger sur un service public et que je n'ai pas accès à un serveur sur lequel je peux toujours ssh, Dropbox s'en charge en se synchronisant (très rapidement) en arrière-plan.
La configuration est quelque chose comme ceci:
À partir de là, vous pouvez simplement cloner ce
~/Dropbox/git/project.git
que vous avez associé à votre compte Dropbox (ou avoir partagé ce répertoire avec des personnes), vous pouvez effectuer toutes les opérations Git normales et elles seront automatiquement synchronisées avec toutes vos autres machines.J'ai écrit un article de blog, On Version Control , ( ancien lien mort ) sur mon raisonnement et la façon dont je configure mon environnement, il est basé sur mon expérience de développement Ruby on Rails , mais il peut être appliqué à n'importe quoi, vraiment.
la source
La bonne façon de le faire est d'utiliser git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox
La création de votre propre référentiel nu dans Dropbox provoque de nombreux problèmes. Anish (le créateur de la bibliothèque) l' explique le mieux :
la source
Cette réponse est basée sur l' expérience Mercurial , pas sur Git, mais cette expérience indique que l'utilisation de Dropbox de cette façon demande des référentiels corrompus s'il y a même une chance que vous mettiez à jour le même référentiel basé sur Dropbox à partir de différentes machines à différents moments (Mac, Unix, Windows dans mon cas).
Je n'ai pas de liste complète des choses qui peuvent mal tourner, mais voici un exemple spécifique qui m'a mordu. Chaque machine a sa propre notion de caractères de fin de ligne et comment les caractères majuscules / minuscules sont traités dans les noms de fichiers. Dropbox et Git / Mercurial gèrent cela légèrement différemment (je ne me souviens pas des différences exactes). Si Dropbox met à jour le référentiel derrière le dos de Git / Mercurial, presto, référentiel cassé. Cela se produit immédiatement et de manière invisible, donc vous ne savez même pas que votre référentiel est cassé jusqu'à ce que vous essayiez d'en récupérer quelque chose.
Après avoir creusé un désordre en faisant les choses de cette façon, j'ai utilisé la recette suivante avec beaucoup de succès et aucun signe de problème. Déplacez simplement votre référentiel hors de Dropbox. Utilisez Dropbox pour tout le reste; documentation, fichiers JAR , tout ce que vous voulez. Et utilisez GitHub (Git) ou Bitbucket (Mercurial) pour gérer le référentiel lui-même. Les deux sont gratuits, ce qui n'ajoute rien aux coûts, et chaque outil joue maintenant à ses points forts.
L'exécution de Git / Mercurial sur Dropbox n'ajoute rien à part le risque. Ne le fais pas.
la source
En ce qui concerne les petites équipes utilisant Dropbox:
Si chaque développeur a son propre référentiel nu accessible en écriture sur Dropbox, qui est uniquement tiré vers d'autres développeurs, cela facilite le partage de code sans risque de corruption!
Ensuite, si vous voulez une «ligne principale» centralisée, vous pouvez demander à un développeur de gérer toutes les poussées vers lui à partir de son propre référentiel.
la source
Je ne voulais pas mettre tous mes projets sous un seul référentiel Git, ni entrer et exécuter ce code pour chaque projet, j'ai donc créé un script Bash qui automatisera le processus. Vous pouvez l'utiliser sur un ou plusieurs répertoires - afin qu'il puisse faire le code de ce message pour vous ou qu'il puisse le faire sur plusieurs projets à la fois.
la source
Je ne pense pas que l'utilisation de Git et Dropbox soit la voie à suivre ... Pensez simplement aux caractéristiques des deux:
Git:
Dropbox:
Et si vous avez peur de partager certains de vos fichiers, pourquoi ne pas les chiffrer? Et puis, vous pourriez obtenir le plus grand avantage de Dropbox sur Git, c'est-à-dire avoir des fichiers publics et privés ...
la source
Nous sommes maintenant en 2015 et, il y a trois jours, un nouvel outil basé sur Dropbox API v2 a été créé pour utiliser en toute sécurité git sur Dropbox. Il fonctionne contre l'API plutôt que d'utiliser le client de bureau et gère correctement plusieurs push simultanés vers un référentiel hébergé dans un dossier partagé.
Une fois configuré, il permet de configurer une télécommande git exactement comme n'importe quelle autre télécommande git.
la source
J'utilise Mercurial (ou Git) + TrueCrypt + Dropbox pour les sauvegardes à distance chiffrées .
Le plus cool est que Dropbox ne synchronise PAS l'intégralité du conteneur TrueCrypt si vous modifiez une petite partie de votre code. Le temps de synchronisation est à peu près proportionnel à la quantité de changements. Même s'il est crypté, la combinaison de TrueCrypt + Dropbox permet une excellente utilisation du bloc chiffrement + synchronisation au niveau du bloc.
Deuxièmement, un conteneur crypté monolithique non seulement ajoute de la sécurité, mais réduit également les risques de corruption du référentiel .
Attention: Cependant, vous devez être très prudent de ne pas avoir le conteneur monté lorsque Dropbox est en cours d'exécution. Il peut également être difficile de résoudre les conflits si 2 clients différents archivent des versions différentes du conteneur. Donc, c'est pratique seulement pour une seule personne l'utilisant pour des sauvegardes, pas pour une équipe.
Installer:
preserve modification timestamp
*.Usage:
PS Décocher la
preserve modification timestamp
dropbox indique que le fichier a été modifié et qu'il doit être synchronisé. Notez que le montage du conteneur modifie l'horodatage même si vous n'y changez aucun fichier. Si vous ne voulez pas que cela se produise, montez simplement le volumeread-only
la source
J'adore la réponse de Dan McNevin! J'utilise Git et Dropbox ensemble aussi maintenant, et j'utilise plusieurs alias dans mon .bash_profile donc mon flux de travail ressemble à ceci:
Ce sont mes alias:
la source
Nous utilisons cette méthode (création d'un référentiel nu dans Dropbox) sur un dossier partagé .
Un petit groupe de développeurs peut extraire de ce référentiel nu synchronisé et créer un clone local. Une fois l'unité de travail terminée, nous repoussons à l'origine.
Une chose qui me manque est un bon moyen d'envoyer un e-mail avec les informations de modification une fois qu'un push vers l'origine se produit. Nous utilisons Google Wave pour suivre manuellement les modifications.
la source
J'ai utilisé Mercurial de la manière recommandée et je vous exhorte à être prudent, surtout si l'une des machines diffère. Les forums Dropbox regorgent de plaintes concernant des problèmes de cas de nom de fichier mystérieux se présentant spontanément. Hg (et je suppose que Git) ne s'en apercevra pas ou ne se plaindra pas lors des enregistrements de routine et vous n'entendrez parler de la corruption que lorsqu'il se plaint d'un dépôt corrompu lorsque vous essayez de l'utiliser pour de vrai. Mauvaises nouvelles. J'aimerais pouvoir être plus précis sur le problème et ses solutions de contournement; J'essaie toujours de sortir de ce bordel moi-même.
la source
Il existe également un projet open source (une collection de scripts multiplateforme [Linux, Mac, Win]) qui fait tous les détails de la gestion du référentiel avec une poignée (3-4) de commandes.
https://github.com/karalabe/gitbox/wiki
Exemple d'utilisation:
Après quoi l'utilisation normale de git:
Consultez le wiki du projet et les manuels pour une référence de commande complète et des tutoriels.
la source
Je stocke mes repo non Github sur Dropbox. Une mise en garde que j'ai rencontrée était la synchronisation après une réinstallation. Dropbox téléchargera les plus petits fichiers avant de passer aux plus gros. Pas de problème si vous commencez la nuit et revenez après le week-end :-)
Mon fil - http://forums.dropbox.com/topic.php?id=29984&replies=6
la source
Maintenant en 2014, j'utilise Git et Dropbox depuis environ un an et demi sans problème. Quelques points cependant:
git push
pousse vers un référentiel distant, de sorte que si jamais il est corrompu, je peux facilement le récupérer.C:\Users
avecmklink /D link target
car certaines bibliothèques pointaient vers des emplacements absolus.la source
J'aime la réponse la plus votée de Dan McNevin. J'ai fini par faire la séquence des commandes git trop de fois et j'ai décidé de faire un script. Voici donc:
Le script nécessite uniquement un nom de projet. Il générera un référentiel git
~/Dropbox/git/
sous le nom spécifié et poussera tout le contenu du répertoire actuel vers la branche principale d'origine nouvellement créée. Si plusieurs noms de projet sont fournis, l'argument de nom de projet le plus à droite sera utilisé.Facultativement, l'argument de la commande -r spécifie la branche distante qui sera envoyée au maître d'origine. L'emplacement du maître d'origine du projet peut également être spécifié avec l'argument -m. Un fichier .gitignore par défaut est également placé dans le répertoire de la branche distante. Les valeurs par défaut du répertoire et du fichier .gitignore sont spécifiées dans le script.
la source
Une autre approche:
Toutes les réponses à ce jour, y compris la réponse @Dan qui est la plus populaire, abordent l'idée d'utiliser Dropbox pour centraliser un référentiel partagé au lieu d'utiliser un service axé sur git comme github, bitbucket, etc.
Mais, comme la question d'origine ne spécifie pas ce que signifie réellement "Git et Dropbox ensemble efficacement", travaillons sur une autre approche: "Utiliser Dropbox pour synchroniser uniquement le worktree."
La procédure comporte ces étapes:
à l'intérieur du répertoire du projet, on crée un
.git
répertoire vide (par exemplemkdir -p myproject/.git
)désynchronisez le
.git
répertoire dans Dropbox. Si vous utilisez l'application Dropbox: allez dans Préférences, Synchroniser et "choisissez les dossiers à synchroniser", où le.git
répertoire doit être non marqué. Cela supprimera le.git
répertoire.exécuter
git init
dans le répertoire du projetCela fonctionne également si le
.git
existe déjà, alors ne faites que l'étape 2. Dropbox gardera cependant une copie des fichiers git sur le site Web.L'étape 2 empêchera Dropbox de synchroniser la structure du système git, ce qui est le résultat souhaité pour cette approche.
Pourquoi utiliser cette approche?
Les modifications non encore poussées auront une sauvegarde Dropbox et elles seront synchronisées sur tous les appareils.
Dans le cas où Dropbox gâche quelque chose lors de la synchronisation entre les appareils,
git status
etgit diff
sera pratique pour trier les choses.Il économise de l'espace dans le compte Dropbox (tout l'historique n'y sera pas stocké)
Cela évite les préoccupations soulevées par @dubek et @Ates dans les commentaires sur la réponse de @ Dan, et les préoccupations de @clu dans une autre réponse .
L'existence d'une télécommande ailleurs (github, etc.) fonctionnera très bien avec cette approche.
Travailler sur différentes branches pose des problèmes qui doivent être résolus:
Un problème potentiel est d'avoir Dropbox (inutilement?) Synchronisant potentiellement de nombreux fichiers lorsque l'on vérifie différentes branches.
Si deux ou plusieurs appareils synchronisés Dropbox ont des branches différentes extraites, les modifications non validées sur les deux appareils peuvent être perdues,
Une façon de contourner ces problèmes consiste
git worktree
à conserver les extractions de branche dans des répertoires distincts.la source
xattr -w com.dropbox.ignored 1 /path/to/somewhere
.Pour mon 2 cents, Dropbox ne fait sens que pour un usage personnel où vous ne voulez pas vous soucier d'obtenir un hôte de dépôt central. Pour tout développement professionnel, vous créerez probablement plus de problèmes que vous n'en résoudrez, comme cela a déjà été mentionné à plusieurs reprises dans le fil, Dropbox n'est pas conçu pour ce cas d'utilisation. Cela dit, une méthode parfaitement sûre pour vider les référentiels sur Dropbox sans plugins ou outils tiers consiste à utiliser des bundles. J'ai les alias suivants
.gitconfig
pour sauvegarder la saisie:Exemple:
la source
J'ai rencontré un problème similaire et j'ai créé un petit script pour le même. L'idée est d'utiliser Dropbox avec Git le plus simplement possible. Actuellement, j'ai rapidement implémenté du code Ruby et j'en ajouterai bientôt d'autres.
Le script est accessible à
https://github.com/nuttylabs/box-git
.la source
Sans utiliser des outils d'intégration tiers, je pourrais améliorer un peu la condition et utiliser DropBox et d'autres services de disques cloud similaires tels que SpiderOak avec Git.
Le but est d'éviter la synchronisation au milieu de ces modifications de fichiers, car il peut télécharger un état partiel et le téléchargera ensuite, corrompant complètement votre état git.
Pour éviter ce problème, j'ai fait:
git bundle create my_repo.git --all
.Ce n'est pas parfait car il n'y a aucune garantie qu'il ne gâchera plus l'état git, mais cela aide et pour le moment je n'ai eu aucun problème.
la source
Sur MacOS, vous pouvez également simplement arrêter Dropbox, apporter vos modifications, puis relancer Dropbox. J'utilise la combinaison suivante et j'en suis très satisfaite:
Dans les deux (votre répertoire de projet géré par git local et votre référentiel git distant situé sur Dropbox) exécutez la commande suivante pour désactiver la compression automatique (qui est le principal problème avec la synchronisation de dropbox)
Ensuite, de temps en temps, compressez les référentiels avec dropbox désactivé. Par exemple, je fais ce qui suit dans mon bash-build-script chaque fois que je fais de nouvelles versions de mes applications.
la source