2009-09-29 20 views
5

Bir SVN repo dosyasında saklanan bir açık kaynak projeyi değiştiriyorum. Değişikliklerimin tamamlanması biraz zaman alacağından projeyi git-svn köprüsünü kullanarak bir Git repo olarak kontrol ettim. Projenin Subversion repo'suna erişimim yok, bu yüzden ona değişiklikleri geri itemiyorum, ancak Git repo'yu (GitHub'da) yayınlamak istiyorum, böylece başkaları benim modifikasyonlarımın gelişimini takip edebilir. Bir "git svn" repo yayınlanıyor

bir "git svn" repo güncellemek için, adından da anlaşılacağı gibi, Subversion repo yeni değişikliklerin üstünde herhangi bir değişiklik rebases, git svn rebase kullanın. o

  1. mi: Bir SVN deposundan klonlanmış bir repo açısından, ben ilgili birkaç sorum var bu yüzden Tabii ki, bu, bir kamu Git repo içine rebased olduğunuz tüm dalları itmek için iyi bir fikir değil reşit bir şube (git-svn rebase kullanarak) bir kamu repo için yayınlamak güvenli mi?
  2. Anladığım kadarıyla, ana dalınızın Git'ini, SVN repo'undan gelen değişiklikleri geri aldığınızı varsayarak, bu repoda gerçek bir gelişme yapmamalısınız; Örneğin, değişiklikleri ustaya birleştirirseniz, bunları SVN repo'ya (git svn dcommit kullanarak) itmelisiniz. Bu politikaya bağlı kalırsanız, rebased master şubesini halka açık bir repoda yayınlamak uygun olur mu?

cevap

1
  1. ancak tüm kaydedilmesini git-svn dcommit kullanarak SVN repo iletilir yalnızca, bir SVN şube yayınlayacak güvenlidir. Şubede herhangi bir değişiklik yapmazsanız, git-svn rebase sadece hızlı ileri sarılacaktır.

    Yayımlanan şubenizden birisinin şubesi varsa, bunun bir SVN repo'undan geldiğini bilmeleri önemlidir. Çünkü eğer değişikliklerini kabul etmeye çalışırsanız, onları SVN repo'ya itmenin tek yolu, esasen değişikliklerini yeniden inşa etmektir. Yapılan değişiklikleri tekrar yayınladıktan sonra, karma eşleşmeyle uğraşmak zorunda kalacaklar, çünkü karma eşleşmeyecek.

  2. master'da çalışmak güvenlidir, ancak muhtemelen pratik değildir. Yukarıdan, git-svn dcommit'u çalıştırana kadar yayınlarınızı yayınlayamazsınız. Yapmak istemediğiniz herhangi bir işiniz varsa, en son SVN taahhütlerini yayınlamaya çalışmadan önce ayrı bir şubeye götürmeniz gerekir (örn. git-svn rebase; git push)