Saya baru saja mulai menggunakan SVN, dan saya memiliki direktori cache yang tidak saya butuhkan di bawah kendali sumber. Bagaimana saya bisa mengabaikan seluruh direktori / folder dengan SVN?
Saya menggunakan Versi dan TextMate pada OS X dan commandline.
svn
version-control
directory
Gilean
sumber
sumber
Jawaban:
Setel
svn:ignore
properti direktori induk:Jika Anda memiliki banyak hal untuk diabaikan, pisahkan dengan baris baru dalam nilai properti. Dalam hal ini, lebih mudah untuk mengedit nilai properti menggunakan editor eksternal:
sumber
svn rm --keep-local dirname
pertama. (Output svn stat saya sangat besar dan saya menabrak kepala saya untuk sementara waktu.)svn propset svn:ignore -F file.txt .
svn:ignore
dan tidaksvn::ignore
seperti yang saya lakukan. Anda dapat mengatur properti sewenang-wenang, sehingga yang terakhir akan diatur OK, dan Anda dapat melihat dan mengedit properti, tetapi itu tidak akan membuat SVN mengabaikan file yang Anda daftarkan.Berikut ini adalah contoh struktur direktori:
Ketika
project
Anda melihat bahwa direktori cache Anda tidak ditambahkan dan muncul seperti itu.Untuk mengatur properti abaikan, lakukan
di mana
svn:ignore
nama properti yang Anda atur,cache
adalah nilai properti, dan.
merupakan direktori tempat Anda menetapkan properti ini. Itu harus direktori induk daricache
direktori yang membutuhkan properti.Untuk memeriksa properti apa yang ditetapkan:
Untuk melihat nilai
svn:ignore
:Untuk menghapus properti yang sebelumnya ditetapkan:
sumber
dirname
. Misalnya, saat mengetiksvn propset svn:ignore dirname
, jika Anda mengizinkan shell (bash) mengisi dirname untuk Anda, itu akan menambahkan garis miring itu, meninggalkan Anda dengan perintahsvn propset svn:ignore dirname/
, yang tidak mengakibatkan folder diabaikan. Setidaknya itu pengalaman saya.Penting untuk disebutkan:
Di baris perintah Anda tidak dapat menggunakan
Ini juga akan menambahkan file yang diabaikan, karena baris perintah diperluas
*
dan oleh karena itusvn add
percaya bahwa Anda ingin semua file ditambahkan. Karena itu gunakan ini sebagai gantinya:sumber
svn add --force *
TIDAK AKAN bekerja. Gunakan titik, bukan bintang.Karena saya menghabiskan beberapa waktu untuk mencoba ini berfungsi, perlu dicatat bahwa jika file sudah ada di SVN, Anda perlu
svn delete
, dan kemudian editsvn:ignore
properti.Saya tahu itu tampak jelas, tetapi mereka terus muncul seperti
?
dalamsvn status
daftar saya , ketika saya pikir itu akan mengabaikan mereka secara lokal.sumber
Untuk sedikit berkembang, jika Anda melakukan ini dengan alat baris perintah svn, Anda ingin mengetik:
yang akan membuka editor teks pilihan Anda, lalu ketik '*' untuk mengabaikan semua yang ada di dalamnya, dan menyimpan + keluar - ini akan menyertakan direktori itu sendiri di svn, tetapi abaikan semua file di dalamnya, untuk mengabaikan direktori, gunakan jalur induk, dan kemudian ketikkan nama direktori dalam file. Setelah menyimpan, jalankan pembaruan ('svn up'), lalu periksa di jalur yang sesuai.
sumber
Setel
svn:ignore
properti pada direktori induk:Ini akan menimpa nilai saat ini dari
svn:ignore
. Anda mengedit nilai dengan:Yang akan membuka editor Anda. Anda dapat menambahkan beberapa pola, satu pola per baris.
Anda dapat melihat nilai saat ini dengan:
Jika Anda menggunakan GUI, harus ada opsi menu untuk melakukan ini.
sumber
svn ps svn:ignore . 'cachedir'
hasil dalamcachedir is not under version control
. berubah menjadisvn ps svn:ignore 'cachedir' .
bekerja untuk sayaTerima kasih atas semua kontribusi di atas. Saya hanya ingin berbagi beberapa informasi tambahan dari pengalaman saya sambil mengabaikan file.
Ketika folder sudah di bawah kendali revisi
Setelah svn mengimpor dan svn memasukkan file, apa yang biasanya kita lakukan untuk pertama kalinya.
Semua cache runtime, folder lampiran akan berada di bawah kontrol versi. jadi, sebelum svn ps svn: abaikan , kita perlu menghapusnya dari repositori.
Dengan SVN versi 1.5 di atas dapat kita gunakan
svn del --keep-local your_folder
, tetapi untuk versi sebelumnya, solusi saya adalah:.svn
folder tersembunyi)Ketika kita membutuhkan lebih dari satu folder untuk diabaikan
svn:ignore
svn pe
perlu mengedit file teks, dan Anda dapat menggunakan perintah ini jika diperlukan untuk mengatur editor teks Anda menggunakan vi :File terlihat seperti ini:
sumber
svn propset svn:ignore -F .ignorethesefiles .
, yang akan menggunakan konten file. Saya suka menyimpannya agar Anda tahu apa yang diabaikan. Pengeditan memerlukan propset tindak lanjut.Hapus dulu ...
Jika direktori Anda
foo
sudah di bawah kontrol versi, hapus dulu dengan:... lalu abaikan:
sumber
... dan jika Anda ingin mengabaikan lebih dari satu direktori (katakan
build/
temp/
dan*.tmp
file), Anda bisa melakukannya dalam dua langkah (mengabaikan yang pertama dan mengedit properti abaikan (lihat jawaban lain di sini) atau satu dapat menulis sesuatu sepertidi baris perintah.
sumber
Jika Anda menggunakan klien SVN tertentu TortoiseSVN , maka saat melakukan, Anda memiliki opsi untuk mengklik kanan item dan memilih "Tambahkan ke daftar abaikan".
sumber
Perintah untuk mengabaikan banyak entri agak sulit dan membutuhkan backslash.
Perintah ini akan mengabaikan apapun bernama
cache
,tmp
,null
, danand_so_on
di direktori saat ini.sumber
svn propset svn:ignore -F .ignorethesefiles .
akan memungkinkan Anda untuk menggunakan file. Dan seperti yang disebutkan, Anda selalu memiliki propedit.Saya memiliki masalah membuat direktori bersarang untuk diabaikan; direktori teratas yang ingin saya abaikan tidak akan tampil dengan 'svn status' tetapi semua subdir melakukannya. Ini mungkin jelas bagi orang lain, tetapi saya pikir saya akan membagikannya:
CONTOH:
sumber
"Terima kasih" svn untuk cara yang begitu mengerikan, palsu dan sulit untuk mengabaikan file.
Jadi saya menulis skrip svn-ign-all :
Juga, untuk mengabaikan daftar file / pathnames tertentu, kita dapat menggunakan varian svn-diabaikan ini . Saya kira svn-abaikan-semua harus benar-benar seperti xargs svn-abaikan.
Satu hal lagi: Saya cenderung mencemari checkout svn saya dengan banyak file acak. Ketika saatnya untuk melakukan, saya memindahkan file-file itu ke subdirektori 'lama', dan memberitahu svn untuk mengabaikan 'lama'.
sumber
Bash oneliner untuk beberapa pengabaian:
sumber
Jika direktori proyek Anda bernama / Proyek, dan direktori cache Anda bernama / Proyek / Cache, maka Anda perlu mengatur properti subversi pada / Proyek. Nama properti harus "svn: diabaikan" dan nilai properti harus "Cache".
Lihat halaman ini di manual Subversion untuk informasi lebih lanjut tentang properti.
sumber
Jawaban Jason akan berhasil. Namun, alih-alih mengatur svn: abaikan ke "." pada direktori cache, Anda mungkin ingin memasukkan "cache" di svn direktori induk : abaikan properti, seandainya direktori cache tidak selalu ada. Saya melakukan ini pada sejumlah folder "sekali pakai".
sumber
UNTUK MENJAGA DIREKTUR YANG SVN AKAN MENGABAIKAN:
sumber
Jika Anda menggunakan frontend untuk SVN seperti TortoiseSVN, atau semacam integrasi IDE, harus ada opsi abaikan dalam menu yang sama dengan operasi komit / tambahkan.
sumber
Setel svn: abaikan properti . Sebagian besar alat svn UI memiliki cara untuk melakukan ini serta diskusi baris perintah di tautan.
sumber
Karena Anda menggunakan Versi, sebenarnya sangat mudah:
sumber
Saksikan garis miring Anda juga. Saya menemukan bahwa termasuk
images/*
dalam file pengaturan abaikan saya tidak mengabaikan./images/
. Ketika saya berlarisvn status -u
masih menunjukkan? images
. Jadi, saya baru saja mengubah pengaturan pengabaian menjadi adilimages
, tanpa garis miring. Menjalankan pemeriksaan status dan itu menghapusnya.sumber
Diselesaikan dengan Eclipse dengan cara berikut:
Pertama-tama, lakukan sinkronisasi folder Anda ke proyek:
Pada tampilan berikutnya, tampilan tim, Anda dapat melihat semua sumber daya yang dapat Anda komit ke server SVN.
Jadi, pilih folder sumber daya dari sumber daya yang ingin Anda abaikan, dan kemudian Anda dapat mengabaikannya menggunakan
Setelah itu, di jendela konfirmasi, pilih opsi pertama: "abaikan menurut nama".
Misalnya, Jika saya ingin mengabaikan folder target dan sumber daya .class mereka, saya akan melakukan sinkronisasi, dan pada tampilan sinkronisasi, saya akan memilih folder target. Setelah itu, saya akan pilih
ke
svn:ignore
dan kemudian saya akan mengkonfirmasi opsi pertama di jendela konfirmasi.sumber
Setelah kehilangan banyak waktu mencari cara melakukan kegiatan sederhana ini, saya memutuskan untuk memposting itu tidak sulit untuk menemukan penjelasan yang layak.
Pertama biarkan struktur sampel
$ svn st? proyek / trunk / target? project / trunk / myfile.x
1 - pertama konfigurasikan editor, di mycase vim export SVN_EDITOR = vim
2 - "svn propedit svn: abaikan proyek / trunk /" akan membuka file baru dan Anda dapat menambahkan file dan subdirektori dalam diri kami ketik "target" simpan dan tutup file dan bekerja
$ svn st? project / trunk / myfile.x
Terima kasih.
sumber