git svn rebase` vs `git rebase tronc"
Je suis en train de travailler sur un projet qui utilise subversion pour leur dépôt. Parce que j'ai besoin de faire quelques changements qui ne peut pas être envoyé vers le serveur svn encore, j'ai commencé à utiliser git svn
de sorte que je pouvais faire local archivages. Ma configuration ressemble à ceci:
Branches: tronc (suivi svn trunk), master (assez proche de ce qui est dans le svn), et le sujet.
*------------------ trunk
\
*-----------*--------- master
\
*-------- topic
Flux de travail:
[on branch master]
$ git svn fetch
$ git svn rebase
$ git checkout -b topic
$ git rebase master
[hack hack hack]
$ git commit -a
[once upstream is ready for my changes]
$ git svn fetch
$ git checkout master
$ git svn rebase
$ git checkout topic
$ git rebase master
$ git svn dcommit
$ git checkout master
$ git svn rebase
$ git branch -d topic
En supposant que personne ne s'engage à svn entre git svn fetch
et git svn rebase
,
Est git svn rebase
exécuté sur le maître essentiellement la même que git rebase trunk
exécuté sur le maître?
Est-il plus judicieux de flux de travail à utiliser? Il semble que il ya beaucoup de modification des branches et de l'année de référence en cours. Je comprends que je veux être en mesure de rebase mon travail sur le dessus de ce qui est dans le svn, mais il me semble que je suis en train de faire plus rebases que ceux qui sont strictement nécessaires.
OriginalL'auteur Sean McMillan | 2012-05-15
Vous devez vous connecter pour publier un commentaire.
Remarque, à partir de git svn, comme détaillé dans "Pourquoi le sens de “nous” et “leurs” inversé avec git-svn":
De sorte que vous n'avez pas besoin de la
git svn fetch
avant votregit checkout master
etgit svn rebase
, surtout si vous suivez seulementtrunk
(parent d'master
).Deuxième point, la
git svn dcommit
, serait de créer des révisions dans le SVN pour chaque nouveau commit surmaster
, mais votre flux de travail ne présente pas de nouveau commit surmaster
, seulement surtopic
(qui n'est pas toujours fusionné surmaster
)La OP Sean McMillan commentaires:
Il détails:
À quoi je réponds:
Un
git svn fetch
suivie par ungit rebase trunk master
serait l'équivalent d'ungit svn rebase
.git svn fetch
avant que jegit svn rebase
... tant Que je suis surmaster
. Mais si je suis surtopic
,git svn fetch
sera mise à jourtrunk
, mais laissezmaster
ettopic
seul. Je n'ai jamaisgit svn rebase
mon sujet branche bien, je negit rebase
. Intéressant à savoir.longtemps que je suis sur le master": oui, c'est l'idée. Et vous, vous faites un
git checkout master
à chaque fois, donc...Sur la deuxième: d'Après les docs,
git svn dcommit
sans une direction spécifiée pousse les commits sur l'actuel CHEF, et pas seulement surmaster
. Donc, je m'engage à SVN de ma branche, puis s'appuyer sur ungit svn rebase
surmaster
pour amener les commits de retour à partir de SVN. J'abandonne letopic
branche après j'ai dcommited. N'est-ce pas casher?Je ne suis pas sûr pourquoi vous
dcommit
tout en étant sur le sujet, depuis un prémisse de la question est que vous avez "besoin de faire quelques changements qui ne peut pas être envoyé vers le serveur svn". C'est pourquoi j'ai remis en question l'utilisation dedcommit
.Mais la question est, "est
git rebase trunk master
le même quegit svn rebase
sur la branche master?" Si c'est le cas, je n'ai pas besoin de changer constamment mes branches, juste pour rebase ma branche master à l'encontre de SVN. Mais si elle ne l'est pas, et il y a une sorte de magie qui se passe quand jegit svn rebase
, je veux savoir.OriginalL'auteur VonC