Subversi: Bagaimana membandingkan perbedaan antara perubahan yang masuk?

19

Saya ingin melihat perubahan yang dibuat rekan kerja saya sebelum saya menerima perubahan yang masuk.

Jadi saya mulai dengan mendapatkan status

svn st -u

... yang memberitahu saya bahwa saya mendapat perubahan masuk

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Saya bisa melihat apa yang telah saya ubah

svn diff localChanges.html

... tetapi bagaimana saya bisa berbeda localAndIncoming.htmluntuk menunjukkan apa yang telah diubah, dan bagaimana perbedaannya dari copy pekerjaan saya?

Andrew
sumber
Bukan jawaban untuk pertanyaan baris perintah Anda, tetapi: pada akhirnya, setelah Anda tahu apa yang berbeda dari copy pekerjaan Anda, Anda mungkin ingin menggabungkan perubahan repositori dengan perubahan Anda sendiri. Saat menggunakan beberapa GUI untuk melakukannya, mengapa tidak menggunakan GUI untuk membantu Anda melakukan diff awal juga? Alat seperti TortoiseSVN menawarkan perbandingan seperti itu. Juga, IDE seperti Eclipse dapat membuat meninjau perubahan yang masuk (bahkan ketika tidak ada yang digabungkan - senang mendapatkan gagasan tentang apa yang telah dilakukan rekan kerja Anda) sangat mudah , menghindari penggabungan otomatis.
Arjan
1
Apakah ada cara GUI untuk melihat perubahan yang masuk menggunakan TortoiseSVN?
Christian
Anda juga ingin melakukan diffChanges.html juga, bukan?
Raffi Khatchadourian

Jawaban:

21

Saya percaya yang Anda butuhkan adalah:

svn diff -rBASE:HEAD
joelittlejohn
sumber
2

FYI svn diffmemberikan perbedaan berdasarkan pada file yang tidak dimodifikasi yang disimpan dalam .svndirektori, bukan berdasarkan versi repo langsung.

Anda dapat menjalankan svn updateuntuk mendapatkan subversi untuk mencoba pembaruan (dan mungkin menggabungkan) dan kemudian melakukan svn diff, tetapi itu tidak sebersih yang saya kira Anda inginkan.

Akhirnya svn difftidak mendukung perbedaan hanya pada repo. Contoh:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Yang secara default membandingkan HEAD dengan revisi yang diteruskan.

Andy
sumber
2

Dengan tortoisesvn (jika Anda menggunakan windows)

  • Aktifkan layar log

  • Pilih revisi kepala

  • Klik kanan pada localAndIncoming.html

  • Pilih Bandingkan dengan copy pekerjaan

Ghislain Hivon
sumber
0

Anda benar-benar tidak bisa sampai Anda benar-benar mengunduh versi baru. Keterbatasan seperti ini adalah salah satu alasan utama mengapa tipe baru kontrol sumber telah menjadi populer akhir-akhir ini. Ini disebut kontrol sumber terdesentralisasi.
Dengan formulir baru ini, Anda memiliki repositori lokal Anda sendiri, dan kemudian Anda dapat mengambil perubahan dari repositori utama dan menjalankannya, jika Anda tidak menyukai perubahan yang dilakukan, Anda dapat mengembalikan repositori Anda sendiri dan pergi dari sana.

http://mercurial.selenic.com/

Dan ya, saya tahu menyarankan Anda mengganti produk bukanlah solusi yang optimal, tetapi itu adalah solusi.

Daisetsu
sumber
0

Lakukan checkout lagi di folder baru.

cd ..
svn checkout  /path/to/repo clean_working_copy

Jika Anda menggunakan kembali clean_working_copy jangan lupa untuk memperbarui sebelumnya

svn update clean_working_copy

Kemudian bandingkan file Anda dengan yang ada di clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Atau dengan diff 3-arah pilihan Anda (milik saya adalah kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
Ghislain Hivon
sumber
Ini bekerja, tetapi scm harus menyediakan cara yang lebih terintegrasi.
rds
0

kupikir

svn diff -r HEAD

hampir memberikan apa yang Anda inginkan. Satu-satunya hal adalah bahwa + dan - dibalik relatif terhadap apa yang Anda harapkan.

Kebingungan
sumber