2011-05-18 9 views

cevap

12

git svn dcommit için --dry-run seçenek olacaktır tam olarak ne bulmak için çok kullanışlıdır Subversion'a bağlı. Özellikle o özelliklere sahiptir:

  • Aslında Subversion Bu diffs Subversion yeni revizyonları oluşturmak için hesaplanacak olan söyler
  • şey taahhüt etmez
  • Size Subversion hangi dalı söyler bu iyi bir fikir Genelde mesajı

taahhüt ilk atası belirtilen Subversion daldan alınır çünkü bu, bazen olmayan açıktır onun bir git-svn-id ile taahhüt - Eğer taahhüdünde olacak önce git svn rebase yapmak dcommit'u kullanmayı bile düşünün, böylece tarihiniz doğrusallaştırılır - aksi takdirde taahhütler Subversion geçmişinde çok anlamlı olmayabilir. (Siz de esasen eşdeğer olacak sonra git log ve gitk --all, yaptık, ama git svn dcommit --dry-run size bunu yorumlamak daha zor olsa bile, gerçekleşmek üzere olan ne bir daha doğru bir resim düşünüyorsan.)

1

Düşünmemenin en kolay yolu bunu kullanarak gitk yapmaktır. Tüm şubeleri görmek için --all seçeneğini isteyeceksiniz. Daha önce kullanmadıysanız, aşağıdakileri yazın: dallarınızın grafik görünümünü göreceksiniz. SVN'den güncellediğinizde, aslında bir rebase (git svn rebase) yaparsınız. Bu, SVN'ye teslim edilmeyen tüm yerel taahhütlerin, son SVN taahhüdünden sonra şubede görüneceği anlamına gelir. Temel olarak uzak SVN ana ve ana branşınız arasındaki taahhütlere bakın.

1

Ben git log --oneline --graph kullanın:

* aaaaaaa commit message 
* bbbbbbb commit message 
|\ 
| * ccccccc commit message 
| * ddddddd commit message 
| * eeeeeee commit message 
|/ 
* fffffff commit message 
|\ 
...

O aaaaaaa, bbbbbbb taahhüt görmek kolay ve fffffff akım (master) şube bulunmaktadır. Bu taahhütler, git svn dcommit'u bir sonraki çalıştırmanızda zaten ya da Subversion'a bağlı olacaktır. (eeeeeee usta ile birleştirildi ve ayrı kaydedilmesini olarak Subversion kararlı olmayacak, ayrı bir dal üzerinde olan ddddddd, ccccccc kaydeder.)

+0

o ccccccc' 'gerçekleşen değişiklikler' ddddddd' ve 'eeeeeee' Subversion sona erecek açık olmak değer, Birleşme taahhüdü için hesaplanan farktan dolayı ffff, "fbbffbb" nin ilk ebeveyni "bbbbbbbb" olduğunu varsayarak, "bbbbbbbb" ye geri dönüşü içerecek, bu dalın "ustaya birleştirildiğini" söyleyerek önerdiğin gibi. Bu değişiklikler ayrı revizyonlar olarak görünmeyecek, bu yüzden sonuçlar idealden daha az olabilir - bu tür bir geçmişi Subversion'a işlemek istiyorsanız ilk önce git svn rebase'i yapmanın en güvenli yolu. –

+0

@Mark Longair: Amacım, "ccccccc", "ddddddd" ve "eeeeeee" nin Subversion'da ayrı taahhütler olarak görüneceği korkularından kurtulmaktı. Tecrübelerimde, bu taahhütler genellikle bir özellik dalı oluşturur ve ayrı bir Subversion işi olarak uygun olmaz. – titaniumdecoy

0

sadece görmek için kaydedilmesini listesi, burada büyüm var:

git svn dcommit -n | sed 1d | cut -d" " -f3 | xargs -I{} git log --oneline --no-walk {} 

çıkışı:

c2e1eff changed a thing 
a889dbf changed a second thing 
18a4653 undid the second thing-- oops 
İlgili konular