2012-10-05 26 views
27

Bir geliştirme projesi yapıyorum. Ana commit ve checkout için çokgit svn - Git ve svn'yi aynı anda kullanabilir miyim? git ile svn arasındaki etkileşime gerek yok

şirket, SVN kullanıyor SVN yoluyla yapılmalıdır.

Ancak, ben SVN gibi bir git kullanıcısıyım yoktur. Sadece benim kodumun iyi olduğunu düşündüğümden beri, SVN şirkete bağlı kalacağımdan, kendi tarihçem için git'u kullanmak istiyorum.

Ben tam tersi SVN şey yapmak için git kullanmak gerekir, ne de yok.

Aynı kodumu aynı anda SVN ve git kullanarak kullanabilir miyim? Aralarında etkileşim yok.

+1

SVN için '.git' klasörünü ve Git için' .svn' klasörünü göz ardı edin ve iyi durumda olmalısınız. Yoksa her ikisinden de aynı anda basmayı/çekmeyi mi soruyorsunuz? – Blender

+0

Ama neden? Git diğer tarafta bir svn deposu ile gayet iyi çalışıyor, neden bundan faydalanmıyorsunuz? –

+3

Kesinlikle mümkün ve meslektaşlarınıza karşı adil bir hamle, bitmemiş değişiklikleri zorlamamak. Ancak orada bir tane _huge_ tehlikesi var: Şirketler deposuna çok az taahhütte bulunma eğiliminde olacaksınız. Bu, meslektaşlarınızla karşılaştırıldığında çok daha fazla çatışma çıkaracağınız anlamına gelir. Subversion kullanırken, sık işlem yapma davranışını kullanmak mantıklıdır. Bu zor yoldan öğrenmek zorundaydım :-) – arkascha

cevap

32

Sen git svn clone <SVN repo URL> kullanarak makinenize bir yıkılma depo klonlayabilirsiniz. Kod, git deposu olarak kullanılabilir. Çalışmanızı burada yapabilir ve istediğiniz gibi yerel taahhütlerde bulunabilirsiniz. Genellikle yararlı olan tüm depodan ziyade "sığ" bir ödeme almak için bir komut satırı seçeneği vardır. Ne olduğunu unuttum.

Herzaman, sen svn update eşdeğer çalıştırmak istediğiniz bir git svn rebase yok. Bu, son senkronize edildikten sonra SVN'ye kontrol edilen yeni değişiklikleri getirecek ve ardından değişikliklerinizi yeni ipucu üzerine yeniden kaydedecektir.

Yüklemelerinizle hazır olduğunuzda, git svn dcommit'u yapın. Bu, tüm yeni taahhütlerinizi tek tek svn gönderecek. Ayrıca yerel taahhütlerinizi tek bir pakete çekebilir ve ilk önce yerel bir rebase ve ardından bir svn dcommit yaparak gönderebilirsiniz. Bu ilk dalda yapılmalıdır (genellikle master).

Eğer tahrip dışarı işaretleyip GIT'de lokal çalışıyoruz Çok gerçeği aralarında "etkileşim" Orada böylece son ifade geçerli değildir anlamına gelir.

+1

Yanıt olarak, yorum olarak gönderilmesi gereken bir düzenleme yapıldı. Düzenlemeyi geri aldım ve bu yoruma ek olarak verbatim ekledim - Genel olarak tüm değişikliklerinizi tek bir düzeltme olarak kabul etmek için kötü bir uygulama olarak kabul edilir (örneğin bkz. Http://stackoverflow.com/questions/107264/how-often -to-commit-change-to-source-control ve http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html). –

İlgili konular