“Git Kullanıcıları için SVN” kaynaklarını nerede bulabilirim? [kapalı]


18

Bu yüzden firmanın SVN kullandığı bir iş aldım (ancak gelecekte Git'e geçecek). Sorun şu ki SVN bilmiyorum. Çok sayıda Google sorgusu denedim ve bulabildiğim tek şey SVN-> Git öğreticileri, "Git neden SVN'den daha iyi" blogları ve (bazı) karşılaştırılabilir komutlar veren belirli bir "hile sayfası" ...

SVN ile ilgili O'Reilly kitabını okuduktan sonra, Git kullanıcıları için SVN'nin kısa (ama çok kısa değil ) talimatları nelerdir?


3
Kısacası: a) indeks yoktur, b) svn up = git pull, c) svn commit = git commit && git push d) şubeler dizinler tarafından taklit edilir ... ;-)
johannes

1
Bunu konuyla ilgili daha fazla nasıl yapabileceğimden emin değilim ...
agent154

5
Olmaz. P.SE'de her şeyin yanında offtopic.
JensG

@ agent154 bizden kalabalık kaynaklı bir arama motoru olmamızı istemiyor. Yaşadığınız sorunu tanımlayın - sorun "svn'de bir şeyler nerede bulabilirim" onun değil, "Bir şey yapmaya çalışıyorum ve nasıl yapılacağını anlayamıyorum." Eğer bu bir şey 'svn' komutuna özgü ise ve onu yazma yolu üzerinde çalışıyorsanız, Stack Overflow'a sorun. Eğer svn'nin iş akışı ve organizasyonu hakkında bir şey varsa (ne zaman dallanmalı, ne zaman birleştirilecek, diğer geliştiricilerle nasıl çalışılacak) - o zaman burada isteyin.

2
Belirlenen sorunun SVN'yi Git kullanıcısı olarak anlamak için biraz uzaktan kolayca bulunabileceğini düşünüyorum. Açıkçası, OP'nin bahsettiğinden başka bir şey bulamayan Google / DuckDuckGo sonuçlarının birkaç sayfasını döktükten sonra bu süper hakkında bir tartışma bulurdum.
Metagrapher

Yanıtlar:


8

Standart referans Subversion RedBook'tur . Geçmişteki becerileriniz ne olursa olsun, bunu yeni baştan okuyun ve ihtiyacınız olan tüm kullanım bilgilerini elde edersiniz. Zor ya da tamamen yabancı değil, çoğu insan SVN'nin gitmekten çok daha kolay olduğunu söylüyor, bu yüzden ana komutları okumakla biraz iyi olmalısınız. Temel kullanım bölüm kaldırdığım ve sorunsuz çalışan olmalıdır.

2 ana fark vardır:

  • taahhüt = merkezi repoya itme. Rebase veya yerel taahhüt yok, çekiş yok.
  • dallanma dizine göre yapılır. Tüm repoyu bir dizin yapısı olarak düşünmek en iyisi, dallanma yazma üzerine yazma semantiği ile bir sembolik bağlantı yapmak gibidir. Git'te tüm repoyu dallar ve aralarında geçiş yaparsınız, böylece yeni şube çalışma kopyanızı 'kaplar', SVN ile repo parçalarınızı değiştirebilirsiniz. Genelde insanlar üst düzey bir klasörde (genellikle dallar olarak adlandırılır) dallanırlar, bu nedenle geçiş, git'in 'bindirme' çalışma tarzına çok benzer hale gelir.

Dallanma önemsizdir, birleşme özellikle DVCS özür dileyicilerinin yapmak istediği kadar kötü değildir, özellikle üst düzey klasörlerin (standart, trunk, şubeler ve etiketler) üçlüsüne yapışırsanız.

SVN'nin attığı birkaç bit var, seyrek dizinler akla geliyor - burada deponuzun sadece bir kısmını kontrol ediyorsunuz. Daha fazla parçaya ihtiyacınız olduğunda, yalnızca ihtiyacınız olanı güncellersiniz. Eğer büyük bir repo (örneğin bir çekirdek ürün ve bir sürü eklenti) varsa, bu mükemmel.

Git kadar iyi olmayan birkaç bit var, korkunç ağaç çatışması akla geliyor - burada dizin düzeyinde bir çakışma var (yani birisi düzenlediğiniz bir dosyayı sildi)

Windows kullanıyorsanız TortoiseSVN kullanın. Büyük ölçüde sallanır.


Bağlı olmak. Dosyalar bir başkası tarafından taşındığında VE başka bir kişi tarafından değiştirildiğinde (aslında eğitimli bir silme + SVN tarafından yönetilen ekle biçimi) SVN ile birleştirme kötü olur. Bunun dışında güzel bir cevap.
JensG

1
Ağaç çatışması sorunundan bahsettim ... Böyle bir durum diğer scms için bir sorundur, ancak git taşınan dosyanın aynı olup olmadığını tespit etmek için bir sezgisel tarama kullandığını anlıyorum, değişiklikler önemli ise yine de yanlış olabilir ( örneğin dosya 2'ye bölünür).
gbjbaanb

Git, ağaç değişikliklerini algılamak için sezgisel tarama gerektirmez; kullanıcının dosyayı taşıması gerekir git mv. SVN var svn move, ancak SVN'de dallanma ve birleştirme bir tür hack olduğundan, git gibi ağaç çatışmalarını otomatik olarak çözebileceğine inanmıyorum ...
Idan Arye

3
@IdanArye git mvadd + remove olarak uygulanır. git sezgisel tarama yöntemini bir işlem sırasında bir hamle veya kopyanın gerçekleşip gerçekleşmediğini belirlemek için kullanır (varsayılan olarak "dosyanın% 80'i + aynı mıdır?")
Izkata

3

Mümkünse git svn kullanın. Senin durumun içindeyim ve hayal kırıklığı yarım yıl sonra git svn geçti ve o zamandan beri mutlu oldum.

Git svn, depoyu yerel olarak kullanmanıza izin verir ve daha sonra SVN sunucusuna git svn rebasebağlılık, yerel değişikliklerinizi alt sürüm bagajına git svn dcommitdayandıran ve daha sonra yeniden temelli taahhütleri yerine getiren bir işlem tarafından gerçekleştirilir.

Belki gelişmiş Subversion kullanımı için uygun değildir, ancak git yerel olarak kullandığınız için her şey yolundadır.

Git klonunu kullanırken subversion kök klasörünü değil, doğrudan hedef dizininizi (klon trunk) klonlamanız gerekir . Bu git'i daha hızlı çalıştırır, aksi takdirde çalışma kopyanız çok büyük olabilir.

Feragatname : Subversion şubeleri, vb. Oluşturmak istediğinizde durumun nasıl olduğunu bilmiyorum. Çalıştığım ekiplerde şubeler kullanılmadı (sadece ben yerel git şubeleri).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.