SVN Mengkomit file tertentu


219

Apakah ada cara untuk melakukan hanya daftar file tertentu (mis. Hanya salah satu dari daftar file yang ingin dilakukan SVN).

Saya sedang mengerjakan MAC OS X di bawah Terminal, tanpa UI apa pun.

Jawaban:


331

Tentu. Cukup daftarkan file:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

Saya tidak mengetahui cara mengatakannya untuk mengabaikan sekumpulan file tertentu. Tentu saja, jika file yang ingin Anda komit mudah terdaftar oleh shell, Anda dapat menggunakannya:

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

Anda juga dapat meminta perintah svn membaca daftar file yang akan dikomit dari file:

$ svn ci -m "Now works" --targets fix4711.txt

1
jadi, pada dasarnya, saya harus memberi nama file secara eksplisit? saya tidak bisa mengatakan jangan menyentuh file khusus ini?
0100110010101

16
Anda bisa melakukannya: svn st | potong -c 9-> target.txt, lalu edit file target.txt untuk menghapus file tertentu dan gunakan parameter --targets untuk menentukan daftar file.
instal

17
Saya pikir tantangan baru saya adalah membuat bug yang membuat printer terbakar.
James Webster

3
Menyedihkan dan konyol. Tidak ada area pementasan. svn adddigunakan untuk menambahkan file ke repositori.
Kandinski

68

Gunakan daftar perubahan. Keuntungan daripada menentukan file adalah bahwa Anda dapat memvisualisasikan dan mengonfirmasi semua yang Anda inginkan sebenarnya sudah termasuk sebelum Anda melakukan.

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

Setelah selesai, svn sekarang memisahkan Anda. Ini membantu saat Anda menyulap banyak perubahan

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

Akhirnya, katakan padanya untuk melakukan apa yang ingin Anda ubah.

$ svn commit --changelist fix-issue-237 -m "Issue 237"

+1 untuk jawaban langsung. Daftar perubahan benar-benar cara untuk pergi!
Miro Markaravanes

1
Jika Anda ingin menambahkan direktori baru ke daftar perubahan, jangan lupa untuk menggunakan svn add terlebih dahulu, kemudian gunakansvn changelist fix-issue-237 --recursive path/to/directory
Fabian Schmengler

Sebenarnya daftar perubahan tidak dapat digunakan dengan direktori baru .... "Subversi saat ini tidak mendukung penggunaan daftar perubahan dengan direktori."
Fabian Schmengler

1
@fschmengler: SVN adalah alat yang mengerikan. Saya hanya berusaha melakukan yang terbaik dari pekerjaan buruk yang dilakukannya. Beralih ke git. : P
jcwenger

10
Saya beralih ke Git bertahun-tahun yang lalu dan tidak pernah melihat ke belakang. Terpaksa menggunakan svn lagi untuk klien, rasanya seperti berlari dengan bola dan rantai di kedua kaki
Fabian Schmengler

38

Anda pada dasarnya meletakkan file yang ingin Anda komit di baris perintah

svn ci file1 file2 dir1/file3

1
jadi, pada dasarnya, saya harus memberi nama file secara eksplisit? saya tidak bisa mengatakan jangan menyentuh file khusus ini?
0100110010101

2
jika dijalankan tanpa argumen svn melakukan semua file yang diubah jika dijalankan dengan file sebagai argumen file ini dilakukan jika dijalankan dengan direktori semua file yang diubah dalam direktori dilakukan
Wienczny

22

Karena keadaan subversi saya, saya harus menjadi kreatif. svn stditampilkan M, Adan ~status. Saya hanya ingin Mdan A...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

Perintah ini mengatakan temukan semua baris keluaran dengan svn styang dimulai dengan Matau A, potong menggunakan pembatas ruang, kemudian dapatkan kolom 8 sampai akhir. Buang ke dalam target.txt dan timpa.

Kemudian modifikasi target.txt untuk memangkas daftar file lebih lanjut. Kemudian jalankan di bawah ini untuk melakukan:

svn ci -m "My commit message" --targets targets.txt

Mungkin bukan kasus penggunaan yang paling umum, tetapi mudah-mudahan ini membantu seseorang.


2
Anda juga dapat menggunakan grep -v '^~'untuk daftar hitam apa yang Anda inginkan.
Martin Konecny


7

coba skrip ini ..

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`

1

Saya membuat (sub) folder bernama "sembunyikan", memindahkan file yang tidak ingin saya komit di sana. Kemudian lakukan komit saya, mengabaikan keluhan tentang file yang hilang. Kemudian pindahkan file tersembunyi dari sembunyikan kembali ke ./

Saya tahu tidak ada kerugian dari taktik ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.