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

azz0r.dll
sumber

Jawaban:

168

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

svn status | grep -P '^(?=.{0,6}C)'
nshew
sumber
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'
Joseph Lust
sumber
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.

corsiKa
sumber
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

Jika Anda memiliki ack dari http://betterthangrep.com/ , Anda dapat melakukan hal berikut

svn st | ack '^C'
bananaaus
sumber
4

Untuk penggunaan Windows PowerShell:

svn status | sls -Pattern '^(?=.{0,6}C)'
Ayo aku
sumber
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.

khmarbaise
sumber
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.

Anders Abel
sumber
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

Sameer Khan
sumber
-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 ...]

thesummersign
sumber
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