pengembangan-web-mp-pd.com

Bagaimana cara saya mengabaikan file di Subversion?

Bagaimana cara saya mengabaikan file di Subversion?

Juga, bagaimana cara menemukan file yang tidak di bawah kontrol versi?

589
andyuk

(Jawaban ini telah diperbarui agar sesuai dengan perilaku SVN 1.8 dan 1.9)

Anda memiliki 2 pertanyaan:

Menandai file sebagai diabaikan:

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 Subversion ".

Subversi, pada versi 1.8 (Juni 2013) dan yang lebih baru, mendukung 3 cara menentukan pola file. Berikut ringkasan dengan contoh:

1 - Area Konfigurasi Runtime - opsi global-ignores:

  • Ini adalah pengaturan sisi klien saja, sehingga daftar global-ignores Anda tidak akan dibagikan oleh pengguna lain, dan ini berlaku untuk semua repo yang Anda checkout ke komputer Anda.
  • Pengaturan ini ditentukan dalam file Area Konfigurasi Runtime Anda:
    • Windows (berbasis file) - C:\Users\{you}\AppData\Roaming\Subversion\config
    • Windows (berbasis registri) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores di HKLM dan HKCU.
    • Linux/Unix - ~/.Subversion/config

2 - Properti svn:ignore, yang ditetapkan pada direktori (bukan file):

  • Ini disimpan dalam repo, sehingga pengguna lain akan memiliki file abaikan yang sama. Mirip dengan cara kerja .gitignore.
  • svn:ignore diterapkan ke direktori dan non-rekursif atau diwariskan. File atau langsung subdirektori dari direktori induk yang cocok dengan Pola File akan dikecualikan.
  • Sementara SVN 1.8 menambahkan konsep "properti yang diwarisi", properti svn:ignore 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 root repo .).

  • Karena itu, untuk menerapkan daftar abaikan secara rekursif Anda harus menggunakan svn propset svn:ignore <filePattern> . --recursive.

    • Ini akan membuat salinan properti di setiap subdirektori.
    • Jika nilai <filePattern> berbeda dalam direktori anak, maka nilai anak sepenuhnya mengabaikan orang tua, sehingga tidak ada efek "tambahan".
    • Jadi jika Anda mengubah <filePattern> pada root ., maka Anda harus mengubahnya dengan --recursive untuk menimpanya pada direktori anak dan turunan.
  • Saya perhatikan bahwa sintaks baris perintah bersifat kontra-intuitif.

    • Saya mulai dengan asumsi bahwa Anda akan mengabaikan file dalam SVN dengan mengetikkan sesuatu seperti svn ignore pathToFileToIgnore.txt namun ini bukan cara kerja fitur diabaikan SVN.

3- Properti svn:global-ignores. Membutuhkan SVN 1.8 (Juni 2013):

  • Ini mirip dengan svn:ignore, kecuali ia menggunakan fitur "properti yang diwarisi" SVN 1.8.
  • Bandingkan dengan svn:ignore, pola file secara otomatis diterapkan di setiap direktori turunan (bukan hanya anak langsung) .
    • Ini berarti bahwa tidak perlu untuk mengatur svn:global-ignores dengan bendera --recursive, karena pola abaikan yang diwarisi secara otomatis diterapkan ketika diwariskan.
  • 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!
    

Untuk pengguna TortoiseSVN:

Seluruh 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 berhubungan 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.

Mendaftar file yang diabaikan:

Perintah svn status akan menyembunyikan file-file yang diabaikan (yaitu, file yang cocok dengan pola global-ignores RGA, atau cocok dengan pola svn:ignore direktori induk langsung atau cocok dengan pola svn:global-ignores direktori lain mana pun itu.

Gunakan opsi --no-ignore untuk melihat file-file tersebut terdaftar. File yang diabaikan memiliki status I, lalu pipa output ke grep untuk 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!

690
andyuk

Gunakan perintah berikut untuk membuat daftar bukan di bawah file kontrol versi.

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

Kemudian edit file ke tinggalkan hanya file yang 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
76
ulitosCoder

Jika Anda menggunakan TortoiseSVN , klik kanan pada file lalu pilih TortoiseSVN/Tambahkan untuk mengabaikan daftar. Ini akan menambahkan file/wildcard ke properti svn:ignore.

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.

47
artur02

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

36
Adrian Enriquez

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

https://github.com/github/gitignore

21
d.danailov

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.

15
Yorick

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 untuk memulai dengan:

svn propset svn:ignore 'file1
file2' .
10
Kenneth

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:

  1. Mendapat file status dari svn
  2. Simpan semua file dengan? ke file "svnignore.txt"
  3. Dapatkan file yang sudah diabaikan dan menambahkannya ke file "svnignore.txt"
  4. Memberitahu svn untuk mengabaikan file di "svnignore.txt"
  5. Menghapus file
8
bkbilly

Juga, jika Anda menggunakan Tortoise SVN Anda dapat melakukan ini:

  1. Dalam menu konteks pilih "TortoiseSVN", lalu "Properties"
  2. Di jendela yang muncul klik "Baru", lalu "Lanjutan"
  3. Di jendela yang muncul berlawanan dengan "Nama properti" pilih atau ketik "svn: abaikan", berlawanan dengan "Nilai properti" ketik nama file atau nama folder atau topeng file yang diinginkan (dalam kasus saya itu "*/target"), klik "Terapkan properti secara rekursif "
  4. Baik. Baik.
  5. Melakukan
7
msangel

Versi jawaban bkbilly 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:

  1. Mendapat file status dari svn
  2. Simpan semua file dengan ? ke file "svnignore.txt"
  3. Dapatkan file yang sudah diabaikan dan menambahkannya ke file "svnignore.txt"
  4. Memberitahu svn untuk mengabaikan file di "svnignore.txt"
  5. Menghapus file
5
LivingDust
  1. cd ~/.Subversion
  2. konfigurasi terbuka
  3. temukan baris seperti 'pengabaian global'
  4. atur jenis file abaikan seperti ini: global-ignores = * .o * .lo * .la * .al .libs * .so .so. [0-9] * .pyc * .pyo * .rej ~ # #. # *. *. swp .DS_Store keluaran node_modules
4
范陆离

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 properti svn:ignore . Ketika kami memeriksa file maka file yang cocok dengan svn:ignore yang akan diabaikan dan tidak akan melakukan.

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 berhasil menggunakan metode ini

3
Slack

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.

3
DGM

Anda juga dapat mengatur pola abaikan global dalam file konfigurasi SVN.

3
petr k.

Menambahkan direktori ke Subversion, dan mengabaikan isi direktori

svn propset svn:ignore '\*.*' .

atau

svn propset svn:ignore '*' .
3
Al Conrad

Gunakan perintah svn status 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. Abaikan.html . Buku ini juga menjelaskan lebih lanjut tentang penggunaan status svn.

2
  1. buka Anda menggunakan Produk JetBrains (mis. Pycharm)
  2. lalu klik tombol 'komit' di bilah alat atas atau gunakan pintasan 'ctrl + k' tangkapan layarool
  3. pada antarmuka komit, pindahkan file yang tidak diinginkan ke daftar perubahan lain sebagai berikut . screenshot_commit_change
  4. lain kali Anda hanya dapat melakukan daftar perubahan default.
0
G. Googol