2010-05-04 3 views
3

J'ai eu un boss, passé, qui a décidé de mettre les branches svn dans le même dossier que le tronc. Normalement, ça ne m'affecterait pas beaucoup mais depuis que j'utilise git-svn ça va si bien. Après avoir fait une extraction, j'ai créé un dossier pour chaque branche de mon dossier racine. J'ai donc trois dossiers, drupal, trunk et client. Le dossier drupal est la branche principale de git, le client et le tronc sont les branches svn.Gits de branche Git-svn dcommit lors de l'utilisation d'une structure de branche impaire

La fusion et la validation des travaux sont excellentes, en fait, tout ce qui est lié à git fonctionne parfaitement. Cependant, dcommit est totalement arrosé, il essaie de commettre un dossier appelé client et un appelé trunk. Je ne peux même pas imaginer les ravages que cela causerait pour svn plus tard. Donc, ma question est, qu'est-ce que j'ai fait de mal dans mon .git/config et est-ce que je peux faire quelque chose pour résoudre ce problème ou vais-je devoir souffrir et revenir à l'utilisation de svn?

S'il vous plaît ne me faites pas revenir en arrière. Je ne pense pas pouvoir le supporter plus longtemps. Le patron Bastard sait comment laisser un héritage.

[svn-remote "svn"] 
     url = https://svn.mydomain.com/svn/project_name 
     fetch = trunk:refs/remotes/trunk 
     branches = *:refs/remotes/* 
     tags = tags/*:refs/remotes/tags/* 

Normalement, la ligne de branches ressemblerait à ceci (lors de l'utilisation --stdlayout):

branches = branches/*:refs/remotes/branches/* 

ls sortie est donc:

$ ls 
client/ docs/ drupal/ sql/ trunk/ 

git sortie -a:

* master 
    trunk 
    remotes/git-svn 
    remotes/trunk 
+0

Quelque chose a changé? Est-ce que Dcommit a déjà travaillé? – dlamotte

+0

Oui, j'avais l'habitude d'utiliser stdlayout et ça a bien fonctionné. Mais j'avais besoin de commencer à parler à cette branche client donc j'ai dû changer le .git/config –

+0

@chuck à quoi ressemblait-il avant le changement et après le changement? – dlamotte

Répondre

2

Je pense que vous avez cassé votre .git/config whe n vous avez changé:

branches = branches/*:refs/remotes/* 

Pour

branches = *:refs/remotes/* 

Changer votre .git/config revenir à ce que vous aviez normalement. Ensuite, ajoutez une nouvelle télécommande (que j'ai découvert cette page, http://www.dmo.ca/blog/20070608113513/) similaire à ce format, mais remplacé par les informations de votre serveur:

[svn-remote "svn34"] 
    url = svn+ssh://your-server/home/svn/project-name/branches/3.4.x 
    fetch = :refs/remotes/git-svn-3.4 

S'il vous plaît noter la différence d'ajouter une nouvelle « distance » pour suivre un nouvelle branche. Votre télécommande actuelle ne peut pas être utilisée pour suivre une branche différente (comme il semblerait à partir des docs git-svn).

+0

Pour une raison quelconque, mon patron n'a pas mis de branches dans un dossier de branches, il vient de les gifler à côté du coffre dans la hiérarchie. Donc, le fichier stdlayout .git/config ne fonctionne pas sans cela. –

+0

C'est un peu subtilement la réponse. Il s'avère que c'est bien d'avoir deux lignes de fetch. J'ai donc redéfini les branches comme il se doit et ajouté une seconde ligne de fetch pour que le client ressemble un peu au tronc. Git le traite vraiment bien et tout semble aller bien. Merci pour tous les conseils! –

1

Si cela ne vous dérange pas d'éditer .git/config à chaque fois qu'une branche est ajoutée, vous pouvez utiliser la syntaxe glob set (http://www.kernel.org/pub/software/scm/git/docs/git -svn.html # _configuration):

fetch = trunk:refs/remotes/trunk 
branches = {client,drupal}:refs/remotes/* 
+0

Merci, j'apprécie la réponse. J'ai déménagé mais j'espère que quelqu'un d'autre trouve cela utile. –