Saya membuat proyek pertama saya di Subversion . Sejauh ini saya punya
branches
tags
trunk
Saya pikir saya perlu segera membuat cabang tunggal dan memulai dari awal. Perbarui cabang adalah norma.
Saya telah melakukan pekerjaan di trunk dan memindahkan konten ke tag sebagai berikut.
mkdir tags/1.0
cp -rf trunk/* tags/1.0
svn add tags/1.0
svn commit -m " create a first tagged version"
Naluriku mengatakan ini benar-benar salah, dan aku harus menjaga hubungan antara file yang digunakan svn copy
. File yang saya buat dengan cara ini tidak akan memiliki hubungan satu sama lain, dan saya yakin saya akan kehilangan fitur Subversion. Apakah saya benar?
Haruskah saya menggunakan salinan svn untuk file individual?
mkdir tags/1.0
svn add tags/1.0
svn copy trunk/file1 tags/1.0
svn copy trunk/file2 tags/1.0
svn copy trunk/file3 tags/1.0
svn commit -m " create a first tagged version"
Haruskah saya menggunakan salinan svn di seluruh direktori?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
Jawaban:
Anda benar karena tidak "benar" untuk menambahkan file ke folder tag.
Anda telah menebak dengan benar bahwa
copy
ini adalah operasi yang digunakan; itu memungkinkan Subversion melacak sejarah file-file ini, dan juga (saya berasumsi) menyimpannya lebih efisien.Dalam pengalaman saya, yang terbaik adalah melakukan salinan ("snapshots") dari seluruh proyek, yaitu semua file dari lokasi check-out root. Dengan cara itu snapshot dapat berdiri sendiri, sebagai representasi sebenarnya dari seluruh keadaan proyek pada titik waktu tertentu.
Bagian dari "buku" ini menunjukkan bagaimana perintah biasanya digunakan.
sumber
Menggunakan:
Steno:
sumber
Seperti dicatat oleh @victor hugo, cara yang "tepat" adalah menggunakan salinan svn. Namun ada satu peringatan. "Tag" yang dibuat dengan cara itu tidak akan menjadi tag yang benar, itu akan menjadi salinan yang tepat dari revisi yang ditentukan, tetapi itu akan menjadi revisi yang berbeda. Jadi, jika sistem build Anda menggunakan revisi svn entah bagaimana (misalnya, memasukkan angka yang diperoleh dengan 'info svn' ke dalam versi produk yang Anda buat), maka Anda tidak akan dapat membuat produk yang persis sama dari tag (the hasilnya akan memiliki revisi pada tag alih-alih dari kode asli).
Sepertinya dengan desain tidak ada cara di svn untuk membuat tag meta yang benar-benar tepat.
sumber
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
dan mendapatkan informasi itu langsung dari svn menggunakan--show-item
opsi:svn info --show-item last-changed-revision
Gunakan ini saja:
(semua dalam satu baris, tentu saja.) Anda harus selalu membuat cabang dari seluruh folder dan konten trunk. Tentu saja mungkin untuk membuat cabang sub-bagian dari bagasi, tetapi ini hampir tidak akan pernah menjadi praktik yang baik. Anda ingin cabang berperilaku persis seperti yang dilakukan bagasi sekarang, dan untuk itu Anda harus mem-cabut seluruh batang.
Lihat ringkasan penggunaan SVN yang lebih baik di blog saya: SVN Essentials , dan SVN Essentials 2
sumber
Bisa menggunakan Kura-kura:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
sumber
@victor hugo dan @unwind benar, dan solusi victor sejauh ini adalah yang paling sederhana. Namun WASPADALAH terhadap eksternal dalam proyek SVN Anda. Jika Anda mereferensi pustaka eksternal, referensi revisi eksternal (apakah tag, atau KEPALA, atau nomor) akan tetap tidak berubah ketika Anda memberi tag pada direktori yang memiliki referensi eksternal.
Dimungkinkan untuk membuat skrip untuk menangani aspek penandaan ini, untuk diskusi tentang topik itu, lihat artikel SO ini: Menandai checkout SVN dengan eksternal
sumber
Pilihan lain untuk menandai repositori Subversion adalah menambahkan tag ke properti svn: log seperti ini:
Baru-baru ini saya mulai berpikir bahwa ini adalah cara yang paling "benar" untuk menandai. Dengan cara ini Anda tidak membuat revisi tambahan (seperti yang Anda lakukan dengan "svn cp") dan masih dapat dengan mudah mengekstrak semua tag dengan menggunakan grep pada keluaran "svn log":
Selain itu, dengan cara ini Anda dapat menghapus tag secara mulus jika perlu. Jadi tag menjadi informasi meta yang lengkap, dan saya menyukainya.
sumber
Yang harus Anda lakukan mengubah jalur URL. Perintah ini akan membuat direktori baru "tagDestination". Baris kedua akan memberi tahu Anda rincian kesalahan lengkap jika ada. Buat svn env variabel jika tidak dibuat. Dapat memeriksa (Cmd: - set, Powershell: - Get-ChildItem Env :) Path default adalah "C: \ Program Files \ TortoiseSVN \ bin \ TortoiseProc.exe"
sumber
Coba ini. Ini bekerja untuk saya:
sumber