SORU
10 NİSAN 2010, CUMARTESİ


DVCS içinde birleştirmek kolay?

Joel on Software okudum:

Dağıtılmış sürüm kontrol ile, dağıtılan kısmı aslında değil en ilginç kısmı.

İlginç kısmı bu yani sistemlerde değişiklikler açısından pek sanmıyorum sürüm açısından.

HgInit:

Birleştirme yaptığımızda, Subversion her iki düzeltmeleri—benim bakmaya çalışır değiştirilmiş kod ve modifiye kod—ve nasıl tahmin etmeye çalışır onları büyük bir günahkar birlikte şut karmaşa. Genellikle, üreten başarısız “çatışmalar birleştirme”sayfalar dolusu gerçekten çatışmalar, sadece değil mi Subversion için başarısız olduğu yerler ne yaptığımızı anlamaya.

Biz çalışırken buna karşılık, Mercurial ayrı ayrı, Mercurial oldu değişiklik kümeleri bir dizi tutmak meşgul. Ve, bizim kod birleştirmek istediğimizde yani birlikte, Mercurial aslında vardır daha fazla bilgi: bunu biliyor her birimiz ne değişti ve olabilir yeniden bu değişiklikleri yerine sadece son ürün ve seyir nasıl tahmin etmeye çalışırken birlikte.

SVN depo klasörü bakarak, Subversion her revizyonlar olarak korumak olduğu izlenimi vardeğişiklik kümesi. Ve bildiğim kadarıyla, Hg, hem de kullanıyordeğişiklik kümesiveanlık görüntüsüre Gıt tamamen kullanıyoranlık görüntüverileri saklamak için.

Eğer varsayımım doğru ise, o zaman DVCS içinde birleştirmek kolay hale getiren diğer bir yolu olsa gerek. Bu da neyin nesi?

* Güncelleme:

  • Teknik açıdan, benim daha çok ilgimi çekiyor, ama teknik olmayan bir bakış açısıyla cevaplar kabul edilebilir
  • Düzeltmeler:
    1. Gitkavramsalmodel tamamen anlık dayanmaktadır. Fotoğraf diğer fotoğrafları farklar olarak saklanabilir, farklar sadece depolama optimizasyonu için. – Rafał Dowgird's comment
  • Teknik olmayan bakış açısıyla:
    1. Sadece kültürel bir DVCS eğer birleştirme sabit olsaydı, DVCS geliştiriciler birleştirme kolay kılmak için çok zaman ve çaba yatırım. hiç işe yaramaz CVCS kullanıcılar OTOH geliştiriciler, iş yapmak için teşvik edecek bir şey yok yani berbat birleştirilmesi için kullanılır. (Neden kullanıcılarınız aynı derecede bir şey için iyi bok ödeme ne zaman iyi bir şey yapmak?)
      ...
      Özetlemek gerekirse: bir DVCS bütün mesele birçok merkezi olmayan depoları var ve sürekli değişiklikleri ileri ve geri birleştirmek için. İyi birleştirme olmadan, bir DVCS sadece işe yaramaz. CVCS ancak, hala bok özellikle eğer satıcı kullanıcılarının dallanma önlemek için durumu eğer birleştirme ile hayatta kalabilir. – Jörg W Mittaganswer
  • Teknik açıdan:
    1. tarihin gerçek bir DAG kayıt yardımcı olur! Temel fark CVCS her zaman aileleri ile bir değişiklik olarak, bazı bilgileri kaybetme birleştirme kayıt yoktu bence. – tonfacomment
    2. çünküizleme birleştirmeve bu daha da önemli aslındaher revizyonlar onun ailesi biliyor. ... Her Gözden Geçirme (her commit) de dahil olmak üzere birleştirme taahhüt biliyor onun ailesi (için birleştirme işliyor demektir/hatırlamak daha bir ebeveyn, yani birleştirme izleme), yeniden diyagramı (DAG = Doğrudan Döngüsel Grafik) Revizyon Tarihi. Eğer revizyonlar grafik biliyorsanız, ortak atadan birleştirmek istediğiniz işleyen bulabilirsiniz. Ve DVCS kendisi bilir ne zaman nasıl yapılırortak ata bulabilirsinizCVS örneğin bir argüman olarak sunmak , gerek yok.
      .
      İki (veya daha fazla) bir ortak ata tamamlar daha fazla olabilir unutmayın. Gıt kullanır sözde "özyinelemeli" birleştirme stratejisi, hangi birleştirir birleştirme üsleri (ortak ata), kadar kaldı ile bir sanal / etkin ortak ata (bazı sadeleştirme), ve bu basit 3-yollu birleştirme. – Jakub Narębskianswer

Sıra 10* *kontrol edin

CEVAP
10 NİSAN 2010, CUMARTESİ


Kolay birleştirme yapar DVCSs özellikle bir şey yok. Bu sadece kültürel bir DVCShiç işe yaramazeğer birleştirme sabit olsaydı, bu kadar DVCS geliştiriciler birleştirme kolay kılmak için çok zaman ve çaba yatırım. CVCS kullanıcılar OTOH geliştiriciler, iş yapmak için teşvik edecek bir şey yok yani berbat birleştirilmesi için kullanılır. (Neden kullanıcılarınız aynı derecede bir şey için iyi bok ödeme ne zaman iyi bir şey yapmak?)

Linus Torvalds Transmeta at CVS kullanarak yaşındayken kenara bırakıp Gıt yaptığı görüşmelerden biri olduğunu söyledibütün bir haftabirleştirme için bir geliştirme döngüsü sırasında. Ve herkes normal gidişat olarak kabul edilir. Günümüzde, bir pencere birleştirme sırasında, Linus sadece birkaç saat içinde birleştirir yüzlerce yapar.

CVCSs CVCS kullanıcılar sadece kendi satıcılara gidip bu saçmalığı kabul edilemez olduğunu söyledi eğer iyi birleştirme yetenekleri olarak DVCSs olabilir. Ama Blub paradoksu olarak da yakalandı: onlar sadecebilmiyorumkabul edilemez olduğunu, asla çünkügördümçalışma birleştirme sistemi. Orada bir şey daha iyi olduğunu bilmiyorlar.

Ve ne zaman onlaryapınbir DVCS denemek, onlar sihirli öznitelik için tüm iyilik "D" bölümü.

Teorik olarak, merkezi yapısı nedeniyle, bir CVCS olmalıdırdaha iyibu küresel bir görünümü var çünkü yetenekleri birleştirmetümtarih, DVCS aksine her depo sadece küçük bir parçası vardır.

Özetlemek gerekirse:bütün meselebir DVCS olduğu birçok merkezi olmayan depoları var ve sürekli değişiklikleri ileri ve geri birleştirmek için. İyi birleştirme olmadan, bir DVCS sadece işe yaramaz. CVCS ancak, hala bok özellikle eğer satıcı kullanıcılarının dallanma önlemek için durumu eğer birleştirme ile hayatta kalabilir.

Yazılım mühendisliği, diğer her şey gibi, çaba meselesi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • Noam Erez

    Noam Erez

    3 NİSAN 2012
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008