2011-12-19 25 views
14

git-tfs kullanıyorum ve git-tfs kullanarak iki TFS dalını birleştirmenin mümkün olup olmadığını merak ediyorum. İki şubem var $/Şirketim/Dev & $/Şirketim/Sürüm-3.3. Release-3.3, Dev şubesinden kaynaklanır. Her ikisi de git tfs kullanılarak farklı git depoları olarak kontrol edilir.Git tfs ile iki TFS dalını birleştirin

Değişiklikleri Dev şubesine yeniden dahil etmek istiyorum. Bu, git-tfs ile yapılabilir mi yoksa TFS araçları kullanarak yapmaya çalışmak için başvurmalı mıyım?

+0

Neden git tfs? –

+2

Daha fazla çakışmayı otomatik olarak çözdüğünden, git birleştirme algoritmasını kullanmayı tercih ederim. – Ceilingfish

cevap

6

HTH ben bunu yapmanın ise hacky şekilde, müthiş bulundu. Git tfs, git config kullanarak TFS alanlarının farkındalığını yönetir. Spesifik olarak remote için 3 özellik; Örneğin url, depo ve getir:

tfs-remote.default.url=http://tfsserver:8080/tfs/collection 
tfs-remote.default.repository=$/Product/Branch/Component 
tfs-remote.default.fetch=refs/remotes/default/master 

Sen default için farklı bir isimle tekrar bu 3 özellikleri ayarlayarak başka remote ekleyebilir. Ör:

tfs-remote.feature_branch.url=http://tfsserver:8080/tfs/collection 
tfs-remote.feature_branch.repository=$/Product/FeatureBranch/Component 
tfs-remote.feature_branch.fetch=refs/remotes/default/feature_branch 

Artık git tfs bootstrap ihraç gerekebilir.

Daha sonra konu yapabilirsiniz: (branch komutuyla) TFS şube yönetebilir, git-tfs 0.16 yana

git merge tfs/feature_branch 
+1

Bu aslında TFS'de birleştirme bekleyen bir değişiklik oluşturur mu? Aksi takdirde, bir TFS istemcisinden birleştirme yapmak isteyen bir sonraki kişiyi aradınız demektir, çünkü TFS birleştirme işlemini gerçekleştirildiği gibi kaydetmeyecektir. Böylece, bu değişiklikleri tekrar birleştirmeye çalışacaktır. (Şüphesiz, çatışmalar oldukça önemsiz olacak, ama yine de can sıkıcı olabilir.) –

+0

Tam olarak doğruysanız, bu mekanizma birden fazla kullanıcı şubeleri birleştiriyorsa sorunlara neden olur. Burada daha iyi bir çözüm bulmuş olabilirim: http://stackoverflow.com/a/7334268/58991 – Ceilingfish

+0

Git-tf (git-tfs değil) bu tür bir birleşmeye izin verip vermediğini bilen var mı? Checkin birleştirme veya yeni kod gibi mi ortaya çıkıyor? –

-1

Git-tfs kullanıcısı değilim, ama bunu git-svn ile geçmişte yaptım (benzer bir yaklaşıma sahip olduğuna inanıyorum). Sanırım ana sorunun iki reponun var. Her iki uzak şubeyi aynı gitme noktasına eklerseniz, yerel bir birleştirme yapabilmeniz, yerel bir işlem yapabilmeniz ve bu işlemi TFS'ye zorlamanız gerekir.

10

böylece artık kolayca yapabilirsiniz: Sonra

git tfs fetch -i feature_branch 

kullanarak kaydedilmesini birleştirme Mevcut şube init, bir tane oluşturun ve TFS şubelerini birleştirin!

https://github.com/git-tfs/git-tfs/blob/master/doc/commands/branch.md#initialize-an-existing-tfs-branch

Ve sürümü 0.19 yana, sen bir git 2 TFS şube birleştirme ve (rcheckin birlikte) TFS bunu terrible yapabilir ve bir birleştirme changeset teslim edilecektir: https://github.com/git-tfs/git-tfs/blob/master/doc/commands/rcheckin.md#checkin-a-merge-changeset

Tek sınırlama (TFS nedeniyle), birleştirme işleminizi yapmadan önce TFS'de tüm işlemlerin TFS'de kontrol edilmiş olması ve TFS'de kontrol etmesi gerektiğidir.

Artık 2TFS şubelerinden daha kolay bir şekilde birleştirebilirsiniz ve bunları kontrol edebilirsiniz ...

+0

30 Eylül 2013 itibariyle, belgelerin "init-branch" ın şubenin "--init" –

+0

@DavidGardiner lehine reddedildiğini ancak 2'nin eşdeğerinin olduğunu unutmayın. biri diğeri için bir sarıcıdır) ve komut 0.20'ye kadar kaldırılmayacaktır (ve 0.19 hala bırakılmamaktadır). – Philippe

+0

Endişelenmeyin .. Sanırım git-tfs bilgisi için iyi bir kaynak olduğunuzu varsayabiliriz :-) –