2009-06-10 8 views
5

J'ai récemment décidé de prendre le plongeon git, et j'apprécie vraiment d'utiliser git, même sur Windows.Can git et subversion jouent bien ensemble?

Mon projet open source actuel lives on subversion, tous les développeurs sont familiers avec la subversion, donc je voudrais garder la subversion comme "source de vérité" pour l'instant. Néanmoins, je veux utiliser git, donc je suis allé de l'avant et créé une copie de la source on github en utilisant . Tout mon travail est fait contre la source dans github et je pousse mes changements sur github. Une fois tous les quelques jours, je pousse aussi mes changements à svn et rebase. L'importation initiale semblait aller bien, mais maintenant, chaque fois que je fais un "git svn rebase", je continue d'avoir des conflits, même sur des fichiers que je n'ai pas changé dans mon dépôt get. Cela me cause much pain.

Par exemple.

 
$ git svn rebase 
First, rewinding head to replay your work on top of it... 
Applying: Added git ignore file 
c:/Users/sam/Desktop/MediaBrowserGit/trunk/.git/rebase-apply/patch:12: trailing 
whitespace. 
*/obj/* 
error: .gitignore: already exists in index 
Using index info to reconstruct a base tree... 
:12: trailing whitespace. 
*/obj/* 
warning: 1 line adds whitespace errors. 
Falling back to patching base and 3-way merge... 
Auto-merging .gitignore 
CONFLICT (add/add): Merge conflict in .gitignore 
Failed to merge in the changes. 
Patch failed at 0001 Added git ignore file 

When you have resolved this problem run "git rebase --continue". 
If you would prefer to skip this patch, instead run "git rebase --skip". 
To restore the original branch and stop rebasing run "git rebase --abort". 

rebase refs/remotes/git-svn: command returned error: 1 

Mes questions:

  1. Est-il possible que je peux dire git de se synchroniser avec svn en utilisant svn comme source, je peux donc commencer par une table rase. (exporter la dernière version, enregistrer les modifications et réinitialiser les références svn quelque part)

  2. Existe-t-il des conseils et astuces pour que ce scénario fonctionne de manière cohérente?

  3. Les options core.safecrlf and core.autocrlf doivent-elles être définies sur true? Il semble que j'aurai besoin d'un peu de saut de cerceau.

connexes:

Il semble obtenir les fins de ligne est juste un peu d'un art noir.

(je me rends compte que cette question a probablement besoin d'être élargi, s'il vous plaît commenter les endroits qui ont besoin en expansion)

Répondre

2

Obtenez-vous des conflits de fin de ligne? Git a quelques propriétés de configuration que vous pouvez définir qui changent comment il gère les caractères de fin de ligne. Je l'ensemble suivant:

# this makes git NOT attempt to convert line endings on commit and checkout 
core.autocrlf=false 

# this makes git check if the conversion done by autocrlf would be reversible 
# this is probably not required because I do not have autocrlf turned on 
core.safecrlf=true 

Notez que je suis sur les fenêtres, tous mes collègues sont sur les fenêtres et je suis interface avec SVN par git-svn. Ces paramètres semblent faire l'affaire pour moi.

alt text http://www.codinghorror.com/blog/images/works-on-my-machine-starburst.png

+0

parfois ... la fin de ligne les moins ennuyeux, il semble dire quelque chose le long des lignes de « pataugeant ligne xxx mettre fin au conflit » ceux qui Retrouve moi sont les conflits de fin non en ligne. il dit qu'un fichier entier est en état de conflit quand je ne l'ai jamais touché ... –

+0

On dirait que vous obtenez des conflits de fin de ligne - si le fichier entier est incohérent c'est probablement parce que quelque chose a changé toutes les terminaisons de ligne –

+0

Quelle est la meilleure pratique quand il s'agit de fin de ligne, git, svn et interopérabilité sur Windows? –

Questions connexes