SORU
29 Aralık 2012, CUMARTESİ


'suçlu' komut için basitleştirilmiş semantik iyi bir şey mi?

Sürüm kontrol geçmişini saklamak için weavetabanlı yeni bir veri yapısı üzerinde çalışıyorum. Bu şüphesiz O çıktığında Şeyler Yapmanın Doğru olup olmadığı hakkında bazı din savaşları neden olur, ama benim sorum bu değil.

Benim sorum blame vermek gerekir ne ilgisi var. Kod satırı eklenmiş, çıkarılmış ve içine birkaç kez birleştirilmiş zaman, her zaman Gözden Geçirme için üstüne ne olduğu belli değil. Özellikle bu kod bölümü silindi, yok oldu tüm kayıtlar gitmiş demektir, ve kaldırılması için bir sakınca yoktur. Bu konu üzerinden gittim herkes ile iyi yapmak sadece denemeye değer olmadığını söyledi. Bazen insanlar bölümü silinmiş aldığımda revizyon silinmiş olan bölümünden sonra hat ne olursa olsun onu aslında onun suçu değiştiğini hack koymak. Muhtemelen eğer bölüm sonunda o son satır olsun kendi suçu değişti, ve eğer dosya rüzgarlar kadar boş sonra suçu gerçekten yok içine aether, çünkü orada kelimenin tam anlamıyla hiçbir yere koyun suçu bilgiler. Çeşitli teknik nedenlerden olmayacağım kullanarak bu kesmek, ama varsayalım ki devam ediyor ama bu tamamen belgelenmemiş ama de facto standart bir uygulama olacak doğrudur (ama çekinmeyin alev beni ve çıkar sistemi).

Asıl soruma geçiyorum. Genelde suçlamak için her satırı bak tam tarih neredeydi eklenen ve kaldırılan tarihi ve kullanarak üç-yollu birleştirme (ya da, davanın criss-cross birleştirir, rastgele saçma) ve dayalı ilişkiler arasında o olup olmadığını belirlemekgerekirorada geçmişine bağlı ve olmamalı ama sonra geçerli revizyon ile yeni olarak işaretle. Farklı olan birden fazla ataları ortaya bir çizgi suçluyor durumda sonra keyfi olarak miras kalan alır. Yine, tamamen belgelenmemiş ama fiilen bu standart bir uygulama ile devam eden tartışmalı olacağını varsayıyorum.

Benim yeni sistem uzanıyor yerde, belirli bir hat olup olmadığı karmaşık bir hesaplama yapmak yerinegerekiriçinde geçerli revizyon dayalı bir karmaşık hesaplama tüm geçmişi, sadece bakıyor hemen ataları, ve eğer hattı herhangi biri onları alarak, bir keyfi bir miras suçu. Yapıyorum bunu değiştirmek için büyük ölçüde teknik nedenlerden dolayı (ve bu tamamen mümkün olan diğer suçlama uygulamaları aynı şeyi, benzer teknik nedenler ve bir eksikliği şefkatli) ama sonra düşünüyorum biraz tarafım aslında tercih yeni davranış olarak daha anlaşılır ve tahmin edilebilir daha eski. Herkes ne düşünüyor?

CEVAP
29 Aralık 2012, CUMARTESİ


Aslında suçu bir tek orada uygulamaları (Subversion'In geçerli olduğuna inanıyorum, tabii biri geçtiğimiz iki yıl içinde yerine) yazdı. Bazı diğerleri ile de yardım ettim.

En azından suçu çoğu uygulamaları tarif ettiğiniz şey yapma:

Genelde suçlamak için her satırı bak tam tarih neredeydi eklenen ve kaldırılan tarihi ve kullanarak üç yollu birleştirme (ya da, davanın criss-cross birleştirir, rastgele saçma) ve dayalı ilişkiler arasında o olup olmadığını belirlemek çizgi olması gerekirdi orada dayanan geçmişi, ve eğer olmamalı ama sonra mark olarak yeni ile güncel revizyon. Farklı olan birden fazla ataları ortaya bir çizgi suçluyor durumda sonra keyfi olarak miras kalan alır. Yine, tamamen belgelenmemiş ama fiilen bu standart bir uygulama ile devam eden tartışmalı olacağını varsayıyorum.

Aslında, çoğu suçluyor önemli ölçüde daha az karmaşık daha bu ve yok rahatsız etmeye kullanım ilişkileri, ama onlar sadece yürümek anne ve babalarının bazı rasgele düzeni, basit yapılar kullanarak delta (genellikle aynı iç yapısı ne olursa olsun diff algoritması var kullanmadan önce döner içine metinsel çıkış), eğer parça değişti, ve eğer öyleyse, suçlu ve işareti o satırı olarak yapılır.

Tüm hatlar suçlanmaktadır kadar örnek sadece yinelemeli bir derinlik yok ilk arama. İlişkileri doğru bir suçu da ilgi çekici hale olup olmadığını dikkate almak için deneyin değil.

Git şey biraz daha karmaşık, ama yine de, sizin tanımladığınız gibi değil.

Subversion Mercurial yapar, ama geçmişi grafiği çok daha kolay olacaktır çok basit.

İma ettiğiniz şey sırayla, aslında, tüm bunların gerçekte ne:

Pick bir keyfi atası ve takip eden patikadan aşağı tavşan deliği kadar hazırlanmış ve öyle olmasa bile neden kendini suçladı tüm satırları, keyfi olarak seç sonraki atası, devam kadar tüm suçu atanır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • SalGames2016

    SalGames2016

    17 Kasım 2012