2010-03-02 23 views
5

UNIX SCCS ve Microsoft Visual SourceSafe deneyimi ile bir Git yenibee'yim.Git, Sürümleri izlemiyor mu?

SCCS'de, her bir dosyada (% R), Düzey (% L), Dalda (% B) ve Sıra (S%) olan bir sürüm (% I) bulunur. % I eşittir R%.% L.B%.% S, tamam mı? Bunlar ID Anahtar Kelimeler olarak adlandırılır.

Amaç, bu kimlik anahtar sözcüklerini kontrol etmeden önce kaynak koduna eklemeniz, daha sonra bunları okuyabilmeniz (değiştirmemeniz) durumunda, bunları sürüm numaralarına dönüştürmenizdir. Örneğin:

printf (“Sürüm s \ n”, “% I”);

... haline gelecek,

printf (“Sürüm% s \ n”, “1.4.6.2”); yazdırılacaktır

,

Sürüm 1.4.6.2

SCCS bir dosya ile dosya bazında sürümlerini izler ve onlara teslim ediyoruz her artıran.

var mı Git'e yakın bir şey var mı?

cevap

4

"To put the prefix ? to codes by Git/Svn" SO sorusunda ele alındığı gibi, Git'de hiçbir RCS anahtar kelime genişletme yok.

En yakın Git komutu, bir çeşit işlem başvurusu yapmak için git describe olacaktır.

Ama genellikle meta veri karıştırma iyi bir fikir değildir veri (dosya) ile (yani veri "sürüm kimliği" yaklaşık veri "dosyası").
Bu tür bilgilere gerçekten ihtiyacınız varsa, diğer normal dosyanızı listeleyen ayrı bir özel dosya, ilişkili sürüm kimliğiyle daha pratiktir. Dosya başına dosya dalında ve sırayla SCS'den benzer kavramlara sahip olan ClearCase'in yerleşik sürüm numaraları yoktur: Bkz. Embedded Version Numbers - Good or Evil?.

+0

Sana sürüm kontrolü saklayarak daha sonra kaynak koduna sürüm numaraları enjekte ve edilmemelidir konusunda hemfikir . Sürüm numarası, yapım zamanında belirlenmelidir - kaynak kodunuzda belirteçlerin değiştirilmesi veya özellik dosyaları kullanılması. –

3

git-describe'u kullanarak benzersiz etiket adları oluşturabilirsiniz.

Komut, bir taahhütten erişilebilen en yeni etiketi bulur. Etiket işlenmeye işaret ediyorsa, sadece etiket gösterilir. Aksi takdirde, etiket adı, etiketli nesnenin üstündeki ek taahhütlerin sayısı ve en son işlemin kısaltılmış nesne adı ile eklenir. 'Git açıklamak' ile yazılım revizyon sayısını belirlemek için nasıl

Örnek (from here):

01 git commit -m'Commit One.' 
02 git tag -a -m'Tag One.' 1.2.3 
03 git describe # => 1.2.3 
04 git commit -m'Commit Two.' 
05 git describe # => 1.2.3-1-gaac161d 
06 git commit -m'Commit Three.' 
07 git describe # => 1.2.3-2-g462715d 
08 git tag -a -m'Tag Two.' 2.0.0 
09 git describe # => 2.0.0 
+0

Asla orijinal kaydı etiketlemem gerek. Başka bir deyişle, bir başkasının eski kodu verildi, derleyicinin en son sürümüyle çalışmak için güncellendi, sonra Git'i keşfettim.İki taahhüt var: orijinal kod ve benim değişikliklerim. Sanırım asıl usta olurdu, değil mi? Öyleyse, efendiyi nasıl etiketlerim? (Aslında, o bir usta değil ... onun kodu gerçekten berbat ... LOL.) – PalaDolphin

+0

usta bir daldır, bu yüzden yeni bir dal oluşturmamış olursanız, hem komisyonlarınız üzerinde olacaktır. – Zitrax