2010-08-11 5 views
1

Disons que j'ai plusieurs commits dans mon dépôt git local qui n'ont pas été poussés vers svn. Par exemple, ces quatre validations sur le maître. A est le plus ancien commit pas dans svn et D est le plus récent commit.En utilisant git-svn, si j'ai plusieurs validations qui ne sont pas dans svn, comment est-ce que je pousse seulement les commits sélectionnées vers svn?

Comment utiliser git svn dcommit pour seulement pousser A et B vers svn, mais conserver C et D uniquement dans mon référentiel git local?

Autres flux de travail bienvenus.

Répondre

1

J'ai réfléchi à cela et j'ai une solution potentielle à mon propre problème.

Je peux créer une branche locale pour chaque tâche discrète sur laquelle je travaille. Si je termine un travail et que j'attends une révision du code, je peux créer une nouvelle branche et commencer à travailler sur une tâche indépendante. Quand une tâche donnée est terminée, je cours git svn rebase. Je rebase alors ma branche locale sur le maître, avance rapide maître à la tête de cette branche, puis dcommit.

Mon problème était que les commits A et B faisaient partie d'une tâche, et C et D étaient une autre tâche indépendante. C et D appartiennent à une branche différente, et ne devraient avoir été commis au-dessus de A et B.

Les réponses à cette question ...

git-svn dcommiting a single git commit

semblent indiquer que seulement avoir commis une et B n'est pas vraiment possible.

+0

C'est exactement le flux de travail que j'utilise; tous mes commits sont dans des branches séparées, et je fusionne seulement une branche avec le maître si je suis sur le point de le pousser à svn –

+0

Oh, et je pense que 1256189 en parle n'est pas possible de commettre * juste * B; vous ne pouvez pas choisir un engagement à dcommit –

+0

Ah, merci. Bonne info – haydenmuhl

3

dcommit prend un argument optionnel spécifiant ce qu'il faut traiter à la tête lors de commits, donc soit de ces travaux (où B est une référence à ce particulier engager, soit par son nom si elle a un ou par hachage):

git svn dcommit B 
git svn dcommit HEAD~2 
+0

J'ai essayé cela, et cela me cause des problèmes. Parfois, il ne commet A, puis craps. Si A et B sont validés, ils ne rebasculent pas correctement et C et D sont validés comme des changements dans ma copie de travail. J'ai la version git 1.5.5.6. – haydenmuhl

Questions connexes