Tuesday, May 01, 2007

Bagaimana CVS menyimpan informasi tag atau branch yang kita buat?

CVS memiliki penomoran tersendiri untuk versi suatu file yang ada di repository. Setiap kali kita membuat tag (yang menandakan suatu versi atau revisi) CVS akan menyimpan informasi tag tersebut dalam setiap file. Tag tersebut berasosiasi dengan penomoran file (versi file).

Bagaimana CVS membedakan tag biasa dengan branch? Versi file yang berasosiasi dengan sebuah branch memiliki angka nol pada angka kedua terakhir. Contoh dibawah ini adalah informasi sebuah file yang didapat dengan perintah "cvs -q log -h"


RCS file: /repository/cvsroot/testproj/test.txt,v
Working file: test.txt
head: 1.1
branch: 1.1.1
locks: strict
access list:
symbolic names:
testproj_v_1_0: 1.1.1.1
testproj_1_0: 1.1.1.1.0.2
test_version_0: 1.1.1.1
tag_1 : 1.1.1
keyword substitution: kv
total revisions: 2
=============================================================================


Kita lihat pada simbolic namec terdapat beberapa tag. Tag yang merupakan branch adalah "testproj_1_0" karena memiliki angka 0 pada posisi kedua dari kanan.

Untuk mendapatkan list branch dari suatu project, bisa dilakukan dengan perintah berikut:

cvs -q log -h | perl -e "while(<>){print if /\s+([^:]+):\s(\d+\.)*0\.(\d+)/ }"

No comments:

Followers