Bagaimana cara saya mengabaikan file di Subversion?
Juga, bagaimana cara menemukan file yang tidak di bawah kontrol versi?
Bagaimana cara saya mengabaikan file di Subversion?
Juga, bagaimana cara menemukan file yang tidak di bawah kontrol versi?
Jawaban:
(Jawaban ini telah diperbarui agar sesuai dengan perilaku SVN 1.8 dan 1.9)
Anda memiliki 2 pertanyaan:
Dengan "file yang diabaikan" Maksudku file tidak akan muncul dalam daftar bahkan sebagai "tidak berversi": klien SVN Anda akan berpura-pura file tidak ada sama sekali dalam sistem file.
File yang diabaikan ditentukan oleh "pola file". Sintaks dan format pola file dijelaskan dalam dokumentasi online SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Pola File dalam Subversi".
Subversion, pada versi 1.8 (Juni 2013) dan yang lebih baru, mendukung 3 cara menentukan pola file. Berikut ringkasan dengan contoh:
global-ignores
opsi:global-ignores
daftar Anda tidak akan dibagikan oleh pengguna lain, dan itu berlaku untuk semua repo yang Anda checkout ke komputer Anda.C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
baik dalam HKLM
dan HKCU
.~/.subversion/config
svn:ignore
Properti, yang ditetapkan pada direktori (bukan file):.gitignore
kerjanya.svn:ignore
diterapkan ke direktori dan tidak rekursif atau diwariskan. File atau subdirektori langsung dari direktori induk yang cocok dengan Pola File akan dikecualikan.Sementara SVN 1.8 menambahkan konsep "properti yang diwarisi", svn:ignore
properti itu sendiri diabaikan dalam direktori turunan tidak langsung:
cd ~/myRepoRoot # Open an existing repo.
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt".
svn status # Check to see if the file is ignored or not.
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored.
svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory.
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory.
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt".
svn status
> ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored!
> 1 unversioned file
(Jadi file ./subdirectory/ignoreThis
tidak diabaikan, meskipun " ignoreThis.txt
" diterapkan pada .
akar repo).
Karena itu, untuk menerapkan daftar abaikan secara rekursif Anda harus menggunakan svn propset svn:ignore <filePattern> . --recursive
.
<filePattern>
nilainya berbeda dalam direktori anak, maka nilai anak itu sepenuhnya mengesampingkan orang tua, sehingga tidak ada efek "tambahan".<filePattern>
pada root .
, maka Anda harus mengubahnya dengan --recursive
menimpanya pada anak dan direktori turunan.Saya perhatikan bahwa sintaks baris perintah bersifat kontra-intuitif.
svn ignore pathToFileToIgnore.txt
namun ini bukan cara kerja fitur diabaikan SVN.svn:global-ignores
Properti. Membutuhkan SVN 1.8 (Juni 2013):svn:ignore
, kecuali ia menggunakan fitur "properti yang diwarisi" SVN 1.8.svn:ignore
, pola file secara otomatis diterapkan di setiap direktori turunan (bukan hanya anak-anak langsung).
svn:global-ignores
dengan --recursive
flag, karena pola pengabaian yang diwarisi secara otomatis diterapkan saat mereka diwarisi.Menjalankan set perintah yang sama seperti pada contoh sebelumnya, tetapi menggunakan svn:global-ignores
sebagai gantinya:
cd ~/myRepoRoot # Open an existing repo
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt"
svn status # Check to see if the file is ignored or not
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored
svn propset svn:global-ignores "ignoreThis.txt" .
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt"
svn status
> 0 unversioned files # the file is ignored here too!
Keseluruhan pengaturan ini membingungkan bagi saya, karena terminologi TortoiseSVN (seperti yang digunakan dalam sistem menu Windows Explorer mereka) pada awalnya menyesatkan bagi saya - saya tidak yakin apa pentingnya menu Abaikan "Tambah secara rekursif", "Tambah *" dan "Tambah" pilihan. Saya harap posting ini menjelaskan bagaimana fitur Abaikan terkait dengan fitur Properti SVN. Yang mengatakan, saya sarankan menggunakan command-line untuk mengatur file yang diabaikan sehingga Anda bisa merasakan bagaimana cara kerjanya daripada menggunakan GUI, dan hanya menggunakan GUI untuk memanipulasi properti setelah Anda merasa nyaman dengan command-line.
Perintah svn status
akan menyembunyikan file yang diabaikan (yaitu, file yang cocok dengan global-ignores
pola RGA , atau cocok dengan svn:ignore
pola direktori induk langsung atau cocok dengan pola direktori ancesor apa pun) svn:global-ignores
.
Gunakan --no-ignore
opsi untuk melihat file-file tersebut terdaftar. File yang diabaikan memiliki status I
, kemudian menyalurkan output grep
ke hanya menampilkan baris yang dimulai dengan "I".
Perintahnya adalah:
svn status --no-ignore | grep "^I"
Sebagai contoh:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
svn propedit svn:ignore .
dan tidak ada editor teks yang dikonfigurasi, Anda akan mendapatkan pesan kesalahan yang mengatakan svn: E205007: Tidak ada variabel lingkungan SVN_EDITOR, VISUAL atau EDITOR yang ditetapkan, dan tidak ada opsi konfigurasi run-time 'editor-cmd' yang dijalankan ditemukan alih-alih membuat editor dibuka. Jadi tentukan saja --editor-cmd nano seperti inisvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
Gunakan perintah berikut untuk membuat daftar bukan di bawah file kontrol versi.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Kemudian edit file untuk meninggalkan hanya file yang sebenarnya ingin Anda abaikan . Kemudian gunakan yang ini untuk mengabaikan file yang tercantum dalam file:
svn propset svn:ignore -F ignoring.txt .
Perhatikan titik di akhir baris. Ini memberi tahu SVN bahwa properti sedang diset pada direktori saat ini.
Hapus file:
rm ignoring.txt
Akhirnya berkomitmen,
svn ci --message "ignoring some files"
Anda kemudian dapat memeriksa file mana yang diabaikan melalui:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt
.
svn pg svn:ignore . >> ignore.txt
setelah perintah pertama untuk menambahkan pengabaian saat ini ke file.
Anda dapat mengabaikan file atau direktori seperti .gitignore. Cukup buat file teks dari daftar direktori / file yang ingin Anda abaikan dan jalankan kode di bawah ini:
svn propset svn:ignore -F ignorelist.txt .
ATAU jika Anda tidak ingin menggunakan file teks, Anda dapat melakukannya seperti ini:
svn propset svn:ignore "first
second
third" .
Sumber: Blog Karsten - Set svn: abaikan untuk banyak file dari baris perintah
svn:ignore
perintahnya (lihat stackoverflow.com/a/58380306/189518 )
Jika Anda menggunakan TortoiseSVN , klik kanan pada file lalu pilih TortoiseSVN / Tambah untuk mengabaikan daftar . Ini akan menambahkan file / wildcard ke svn:ignore
properti.
svn:ignore
akan diperiksa ketika Anda memeriksa file, dan file yang cocok akan diabaikan. Saya memiliki daftar abaikan berikut untuk proyek Visual Studio .NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Anda dapat menemukan daftar ini di menu konteks di TortoiseSVN / Properties .
Seperti tak seorang pun tampaknya telah menyebutkannya ...
svn propedit svn:ignore .
Kemudian edit konten file untuk menentukan pola untuk diabaikan, keluar dari editor dan Anda sudah selesai.
Saya menemukan artikel .svnignore Contoh untuk Java .
Contoh: .svnignore untuk Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
Dan setelah itu:
svn propset svn:ignore -F .svnignore .
Contoh untuk .gitignore. Anda dapat menggunakan untuk .svnignore Anda
Saat menggunakan propedit pastikan tidak memiliki spasi tambahan karena itu akan menyebabkan file dikeluarkan dari daftar abaikan.
Ini dimasukkan secara otomatis jika Anda telah menggunakan tab-autocomplete di linux untuk membuat file sebagai permulaan:
svn propset svn:ignore 'file1
file2' .
Solusi lain adalah:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
atau baris demi baris
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Apa fungsinya:
Juga, jika Anda menggunakan Tortoise SVN Anda dapat melakukan ini:
config
file.
Jawaban bkbilly versi yang lebih mudah dibaca :
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Apa fungsinya:
Anda juga dapat mengatur pola abaikan global dalam file konfigurasi SVN.
svn status
akan memberi tahu Anda file mana yang tidak ada di SVN, dan juga apa yang berubah.
Lihatlah properti SVN untuk properti abaikan.
Untuk semua hal SVN, Buku Merah wajib dibaca.
Menambahkan direktori ke subversi, dan mengabaikan isi direktori
svn propset svn:ignore '\*.*' .
atau
svn propset svn:ignore '*' .
Gunakan status perintah svn pada copy pekerjaan Anda untuk menunjukkan status file, file yang belum di bawah kontrol versi (dan tidak diabaikan) akan memiliki tanda tanya di sebelahnya.
Sedangkan untuk mengabaikan file Anda perlu mengedit properti svn: ign, baca bab Mengabaikan Item Tidak Berversi di svnbook di http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore. html . Buku ini juga menjelaskan lebih lanjut tentang penggunaan status svn.
SVN ignore
mudah dikelola di TortoiseSVN. Buka TortoiseSVN dan klik kanan pada menu file kemudian pilih Tambahkan ke daftar abaikan.
Ini akan menambahkan file di svn:ignore
properti. Ketika kami memeriksa file maka file yang cocok dengan svn:ignore
itu akan diabaikan dan tidak akan dilakukan.
Dalam proyek Visual Studio kami telah menambahkan file berikut untuk diabaikan:
bin obj
*.exe
*.dll
*.pdb
*.suo
Kami mengelola kode sumber pada SVN dari Comparetrap menggunakan metode ini dengan sukses
Apa yang berhasil untuk saya:
Bagaimana cara saya mengabaikan file di Subversion?
1. Dalam File Explorer, klik kanan pada folder-nama proyek SVN
2. Klik pada "SVN Commit ..."
3.A "komit" akan muncul jendela
4. Klik kanan pada folder / file yang ingin Anda abaikan
5.Klik pada Tambah untuk mengabaikan daftar
6.Pilih folder / file
7.Komit "perubahan properti" ke SVN
Juga, bagaimana cara menemukan file yang tidak di bawah kontrol versi?
Setelah Langkah 3 di atas, klik "Tampilkan file tidak berversi"