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.