Apakah ada perintah untuk mencantumkan konflik SVN?


116

Adakah yang tahu perintah SVN untuk membuat daftar konflik saat ini antara repo dan copy pekerjaan?

Terima kasih

Jawaban:


168

Di Linux, jika Anda hanya ingin melihat konflik, pipa status melalui grep.

svn status | grep -P '^(?=.{0,6}C)'

6
Menambahkan -A 1ke argumen grep akan menunjukkan kepada Anda baris setelah baris konflik, yang terkadang terkait dengan konflik.
— Wesley Hartford

4
-P memberitahu grep untuk menggunakan perl regex, ^ = awal string, (? =) Mengapit pola lookahead yang mana. {0,6} karakter 0 sampai 6 dan huruf C, yang merupakan indikator konflik
— Pete

5
Apa gunanya menggunakan bagian lookahead? Tidak bisa '^.{0,6}C'bekerja dengan baik?
— hans_meine

2
Untuk menggunakan perintah yang sama di OSX, Anda perlu menginstal GNU grep karena grep BSD tidak memiliki perl regex flag (-P)
— G.Rassovsky

4
Pada Windows versi Powershell ini(svn status) -Match '^(?=.{0,6}C)'
— bstoney

28

Gunakan saja grep!

svn st | grep '^C'

2
@sid, itu regexp untuk 'dimulai dengan,' jadi itu berarti karakter pertama adalah C
— Joseph Lust

1
Saya berpikir jika ini bisa melewatkan file yang berstatus "A + C" .. Apakah itu masalah ..
— Raghav

2
egrep '^ [AC +] +' akan melakukan triknya, meskipun saya biasanya tidak memiliki masalah A + C.
— Joseph Lust

1
Sederhana untuk diingat, dan cukup untuk kebanyakan kasus. Terima kasih @JosephLust.
— csonuryilmaz

11

Anda dapat mencoba svn merge -r <revision> --dry-rundan melihat apa yang terjadi seperti itu.


Sepertinya tidak berfungsi pada Windows dengan svn 1.7.8. Log kesalahan: svn: E205001: Coba 'svn help' untuk info lebih lanjut svn: E205001: Gabungkan sumber diperlukan
— kakyo


4

Untuk penggunaan Windows PowerShell:

svn status | sls -Pattern '^(?=.{0,6}C)'

3

Jika Anda sudah menggabungkan Anda bisa menggunakan

svn status

dan melihat huruf besar "C" untuk konflik, tapi biasanya Anda seharusnya tidak melihat jenis seperti itu dalam copy pekerjaan Anda.


1

Ini mungkin untuk digunakan svn merge --dryrunsambil menentukan URL repositori dengan semua revisi setelah revisi terbaru yang Anda perbarui.

Misalnya jika WC Anda saat ini didasarkan pada revisi 147, ini bisa melakukannya:

svn merge -r 148:HEAD http://url.to.repo/repo/

Tidak ada yang saya lakukan sendiri, jadi Anda harus mencobanya sendiri.


0

Jika Anda belum menggabungkan atau memperbarui file, gunakan perintah di bawah ini

svn status --show-updates | grep -P '.*(?=.*M)(?=.*\*).*'

Singkatnya

svn st -u | grep -P '.*(?=.*M)(?=.*\*).*'

Detail
SVN tidak menandai status konflik (C) sampai Anda memperbarui file menggunakan svn update.
Sampai saat itu status ditampilkan seperti di bawah ini

+---+------+---------------+---------------+
| M |      |               | 23246   file1 |
+---+------+---------------+---------------+
|   |      | *             | 23233   file2 |
+---+------+---------------+---------------+
| M |    * | 23233   file3 |               |
+---+------+---------------+---------------+

M - Dimodifikasi di lokal
* - Pembaruan / Masuk dari jarak jauh
M dan * - Dimodifikasi di lokal, serta di jarak jauh - Ini adalah konflik tetapi svn belum ditandai


-2

di mac

$ svn status | grep -e '^!'

melakukan pekerjaan itu

Inilah pria untuk grep:

penggunaan: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e pattern] [-f file] [--binary-files = value] [--color = when] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [pattern] [file ...]


Bagaimana pencocokan tanda seru akan membantu menemukan item yang konflik?
— anddam

^!adalah regex untuk setiap baris yang dimulai dengan !. Semua baris konflik dimulai dengan!
— tanda musim panas

2
Tidak, saya baru saja menyelesaikan konflik pada repo 1.9 dan baris konflik dimulai hanya dengan "C".
— anddam
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.