Comment utiliser git pour la synchronisation de fichiers?
J'ai besoin pour la distribution de la synchronisation de fichiers. Alors tout d'abord, des suggestions? Mon idée est de git car la vitesse est un problème.
Mon git connaissances est assez rudimentaire mais alors, voici ce que j'ai fait.
J'ai téléchargé le portable git (je suis sur PC donc msysgit).
J'ai placé une copie dans c:\root\git et une copie en c:\root\git c:\client\git\
J'ai créé un répertoire c:\temp\root\content et a créé des fichiers
c:\root\content>..\git\bin\git.exe init
c:\root\content>..\git\bin\git.exe add *
c:\root\content>..\git\bin\git.exe commit -f
c:\client>..\git\bin\git.exe clone file:///c:\root\content
Cela crée un répertoire de contenu mais il est vide! Les fichiers commis à la racine ne sont pas là.
Aussi quand je fais une commande pull-je obtenir
C:\temp\client\content\content>c:\temp\client\git\bin\git.exe pull
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Your configuration specifies to merge the ref 'master' from the remote, but no such ref was fetched
Est clair que je vais manquer un concept. Ce qui se passe?
- Si vous voulez juste la synchronisation, je dirais que rsync est un meilleur choix de l'outil.
- rsync est bon pour la synchronisation unidirectionnelle, si vous souhaitez synchroniser des fichiers qui pourrait changer dans les deux endroits, je suggère à la recherche à l'unisson
- rsync est unix seulement le droit? Ne peut pas se permettre de présumer de rien au sujet de la plate-forme.
- J'utilise rsync sur OS X et Windows tout le temps. Alors, non, ce n'est pas uniquement pour Unix.
- Je dirais que rsync est mieux pris en charge sur Windows (cwRsync) que Git est. Mais mieux encore, +1 sur davr la suggestion de l'Unisson (cis.upenn.edu/~bcpierce/l'unisson).
- intéressant. Ok rsync il est.
- Depuis que vous utilisez Windows, Microsoft SyncToy peut être plus facile à utiliser que rsync (microsoft.com/downloads/...)
- SyncToy n'aide pas avec la distribution de synchronisation et comme je l'ai dit, je ne peux pas se permettre de présumer la plate-forme Windows
- Les deux rsync et à l'unisson ont des ports pour linux/mac/windows
- Vous devez rechercher git-annex qui est créé exactement pour cette raison.
Vous devez vous connecter pour publier un commentaire.
Vérifier dans http://sparkleshare.org/
Sparkleshare vous donne une expérience utilisateur similaire à Dropbox, sauf que c'est sous-jacente moteur de synchronisation est git. Ce n'est pas le plus stable chose, mais vous pouvez regarder c'est la sortie du journal pour voir ce que les commandes git, il va réaliser une intégration harmonieuse de la synchronisation. Une fois que vous apprenez de ceux-ci, vous pouvez simplement faire votre propre synchronisation des scripts qui sont stables. Je pense que la plupart de sparkleshare problèmes dans l'interface graphique.
git-annex pourrait être un autre outil à prendre en compte.
Git peut être un bon outil pour la synchronisation de la source entre le développement et la production, pour une raison: Il est facile de "hot fix" dans la production et le contrôle de la fixer de nouveau dans l'arbre. De sûr, vous devriez toujours reproduire le bug dans un environnement de test et de l'y fixer, mais parfois vous ne pouvez pas.
Au lieu de
git add *
, utilisezgit add .
Utilisation
git status
avant de s'engager à assurez-vous que les fichiers appropriés sont mis en scène pour la validation.J'ai juste essayé de reproduire les étapes de votre activité.
git commit -f
ne pas faire n'importe quoi avec la 1.6.5.1 version je viens d'installer. Mais elle devrait vous donner un long message d'erreur.et les fichiers que j'ai créé dans
repo1
apparaissent dansrepo2
.Comme davr suggéré dans les commentaires, vous pouvez essayer de L'unisson. Par avoir toutes vos hôtes synchronisation avec un moyeu central, vous pouvez avoir n-synchronisation unidirectionnelle. L'unisson ne préserve pas l'histoire, donc si vous voulez que vous devez planifier rdiff-backup à courir tous les jours sur l'un de vos hôtes (de préférence celui qui a la plus grande, la plus fiable du disque dur). Ces deux outils ont des binaires pour Windows.
J'ai aussi envisagé d'utiliser Git pour la synchronisation de fichiers, mais en ajoutant manuellement, de commettre, en le tirant et la fusion est beaucoup trop de travail (un outil est utile uniquement si vous les utilisez). Dans ma tête, j'ai conçu un peu de Python ou Ruby barre d'état système du processus de regarder votre repo pour les changements, vous harcèle quand il est sale, ont des options pour la validation automatique après une période de changements, et aussi faire l'auto push/pull. Résoudre les conflits de fusion serait fait à l'aide d'un outil existant.
Pour plus de détails, consultez le cet article je viens d'écrire à propos personnels de la synchronisation de fichiers.