Saya mencari cara yang baik untuk secara otomatis 'menambahkan' semua file tidak berversi dalam copy pekerjaan ke repositori SVN saya.
Saya memiliki server langsung yang dapat membuat beberapa file yang harus di bawah kendali sumber. Saya ingin memiliki skrip pendek yang dapat saya jalankan untuk secara otomatis menambahkan ini, bukannya melalui dan menambahkannya satu per satu.
Server saya menjalankan Windows Server 2003 sehingga solusi Unix tidak akan berfungsi.
svn
command-line
windows-server-2003
JerSchneid
sumber
sumber
Jawaban:
svn add --force * --auto-props --parents --depth infinity -q
Tip yang bagus! Satu komentar: Eclipse saya menambahkan file baru ke daftar abaikan secara otomatis. Ini mungkin masalah konfigurasi, tetapi bagaimanapun juga: ada
--no-ignore
opsi yang membantu.Setelah ini, Anda dapat melakukan:
sumber
alias magic="svn add --force * --auto-props --parents --depth infinity -q"
- Dijelaskan:svn help add
*
di akhir, kalau tidak itu tidak akan berhasil (sewa untuk saya)Ini adalah pertanyaan yang berbeda dengan saya tetapi ada jawaban di sana yang termasuk dalam pertanyaan ini:
sumber
Apa yang berhasil adalah ini:
Menambahkan isi subdirektori.
Tidak menambahkan file yang diabaikan.
Daftar file apa yang ditambahkan.
Titik dalam perintah menunjukkan direktori saat ini, ini dapat diganti dengan nama direktori atau jalur tertentu jika Anda ingin menambahkan direktori yang berbeda dari yang saat ini.
sumber
.\*
atau jika svn root berada pada dir yang berbedastuff\svn_root\*
.stuff\svn_root
tidak menambahkan file di sub direktori (misalnya distuff\svn_root\already_in_svn\not_in_svn.txt
). Oleh karena itu bintang di akhir.Ini bekerja untuk saya:
( Sumber )
Karena Anda sudah memecahkan masalah Anda untuk Windows, ini adalah solusi UNIX (mengikuti Sam). Saya menambahkan di sini karena saya pikir itu masih berguna bagi mereka yang mencapai pertanyaan ini menanyakan hal yang sama (karena judulnya tidak termasuk kata kunci "WINDOWS").
Catatan (Feb, 2015): Seperti yang dikomentari oleh "bdrx", perintah di atas dapat lebih disederhanakan dengan cara ini:
sumber
awk '/^[?]/{print $2}'
; Tidak perlu untuk proses grep tambahan.Ini akan menambahkan file tidak berversi apa pun di direktori saat ini dan semua direktori anak berversi.
sumber
Metode ini harus menangani nama file yang memiliki nomor / kombinasi spasi di dalamnya ...
Berikut adalah penjelasan tentang apa yang dilakukan perintah itu:
Gunakan argumen -i ke xargs untuk menangani kemampuan mengimpor file dengan spasi ke 'svn add' - pada dasarnya, -i menetapkan {} untuk digunakan sebagai pengganti sehingga kita dapat menempatkan "karakter di sekitar nama file yang digunakan oleh 'svn Menambahkan'.
Keuntungan dari metode ini adalah bahwa ini harus menangani nama file dengan spasi di dalamnya.
sumber
TortoiseSVN memiliki kemampuan ini bawaan, jika Anda bersedia menggunakan solusi non-command-line. Cukup klik kanan pada folder tingkat atas dan pilih Tambah ...
sumber
Ini seperti yang didokumentasikan pada buku svn dan yang paling sederhana dan berfungsi sempurna untuk saya
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.add.html
sumber
Menggunakan:
sumber
svn status | cut -d ? -f 2 -s | xargs svn add
Saya selalu menggunakan:
Salin & tempel
sumber
Karena posting ini ditandai Windows, saya pikir saya akan mencari solusi untuk Windows. Saya ingin mengotomatiskan prosesnya, dan saya membuat file bat. Saya menolak membuat console.exe di C #.
Saya ingin menambahkan file atau folder yang tidak ditambahkan dalam repositori saya ketika saya memulai proses komit.
Masalah dengan banyak jawaban adalah mereka akan mendaftar file tidak berversi yang harus diabaikan sesuai daftar abaikan saya di TortoiseSVN .
Ini adalah pengaturan hook dan file batch saya yang melakukan itu
Script Kait Kura-kura:
svnadd.bat
sumber
Dalam implementasi ini, Anda akan mendapat masalah jika folder / nama file Anda memiliki lebih dari satu ruang seperti di bawah ini:
kasus-kasus seperti itu dicakup dengan sederhana:
sumber
Jika Anda menggunakan Linux atau menggunakan Cygwin atau MinGW di windows Anda dapat menggunakan solusi mirip-bash seperti berikut ini. Berbeda dengan yang serupa lainnya yang disajikan di sini, yang ini memperhitungkan ruang nama file akun:
sumber
Setelah menghabiskan waktu mencoba mencari cara menambahkan beberapa file secara rekursif, saya pikir akan sah untuk membagikan apa yang berhasil bagi saya:
Ini dia penjelasannya.
Perintah pertama menambahkan semua direktori. Perintah kedua hanya menambahkan file sesuai dengan pola yang ditentukan.
Biarkan saya memberikan detail lebih lanjut:
Pada perintah kedua, satu-satunya perbedaan adalah perintah dir dan perintah svn, saya pikir cukup jelas.
sumber
Anda bisa menggunakan perintah
atau
Jika file / direktori Anda tidak ditambahkan secara rekursif. Lalu periksa ini.
Menambahkan rekursif adalah properti default . Anda bisa lihat di buku SVN .
Masalah bisa ada di daftar abaikan Anda atau properti global.
Saya mendapat solusi pelacak masalah google
Periksa properti global untuk mengabaikan bintang (*)
TortoiseSVN > Properties
.svn:global-ignores with a value of *
star(*)
itu akan mengabaikan penambahan rekursif. Jadi hapus properti ini.Periksa pola abaikan global untuk mengabaikan bintang (*)
TortoiseSVN > Settings > General
.star(*)
, hapus properti ini.Orang ini juga menjelaskan mengapa properti ini ditambahkan dalam proyek saya.
Cara paling suka yang ada di sana adalah seseorang mengklik kanan file tanpa ekstensi apa pun dan memilih TortoiseSVN -> SVN Abaikan -> * (secara rekursif), dan kemudian melakukan ini.
sumber
Anda dapat memasukkan perintah berikut di Linux:
sumber
Karena ia menentukan Windows, di mana awk & sed tidak standar:
atau dalam file batch:
sumber
Ini adalah cara malas dan berbahaya untuk menyinkronkan direktori dengan SVN termasuk file baru:
Meskipun ini dapat bekerja dalam keadaan darurat, namun hal itu dapat memiliki konsekuensi serius juga. Sebagai contoh, SVN akan sering kehilangan jejak sejarah file.
Cara ideal untuk menyinkronkan direktori adalah untuk dapat melakukan diff lalu menggunakan svn patch, namun ini menyimpang dari format dalam perintah diff dan perintah svn diff akan membandingkan perbedaan direktori yang berfungsi daripada perbedaan pada tingkat sistem file.
sumber
Saya pikir saya telah melakukan sesuatu yang mirip dengan:
tapi tidak yakin apakah ingatanku benar ;-p
sumber