Subversion: Gelen değişiklikler arasındaki farklar nasıl karşılaştırılır?


19

Gelen değişiklikleri kabul etmeden önce iş arkadaşlarımın yaptığı değişiklikleri görmek istiyorum.

Bu yüzden statü alarak başlıyorum

svn st -u

... bana gelen bir değişikliğim olduğunu söyler

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

Neyi değiştirdiğimi görebiliyorum

svn diff localChanges.html

... fakat localAndIncoming.htmlneyin değiştiğini ve çalışma kopyamdan ne kadar farklı olduğunu göstermek için nasıl farklılık gösterebilirim?


Komut satırı sorunuzun cevabı değil, ama: sonunda, çalışma kopyanızdan farklı olanı öğrendikten sonra, büyük olasılıkla depo değişikliklerini kendi değişikliklerinizle birleştirmek isteyeceksiniz. Bunu yapmak için bazı GUI'leri kullanırken, neden ilk farkı yapmanıza yardımcı olacak bir GUI kullanmıyorsunuz? TortoiseSVN gibi araçlar böyle bir karşılaştırma sunar. - Ayrıca, Eclipse gibi IDE (İş arkadaşların için ne kadar olmuştur hakkında bir fikir almak güzel birleştirme şey yok olsa bile) gelen değişiklikleri gözden yapabilirsiniz çok kolay otomatik birleştirmeyi kaçınarak.
Arjan

1
TortoiseSVN kullanarak gelen değişiklikleri görmenin GUI yolu var mı?
Christian

Ayrıca incomingChanges.html dosyasını da dağıtmak istersiniz, değil mi?
Raffi Khatchadourian

Yanıtlar:



2

FYI , canlı repo sürümüne göre değil svn diff, .svndizinde saklanan değiştirilmemiş dosyaya göre bir fark verir .

svn updateBir güncelleme (ve muhtemelen birleştirme) denemek ve sonra bir yapmak için yıkım almak için çalıştırabilirsiniz svn diff, ama bu istediğiniz gibi temiz değil.

Sonunda svn diffsadece repo farklı destek destekler. Misal:

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

Hangi varsayılan HEAD ile geçirilen revizyon karşılaştırılır.


2

İle tortoisesvn (eğer pencereler kullanıyorsanız)

  • Günlük ekranını çağır

  • Kafa revizyonunu seçin

  • LocalAndIncoming.html dosyasına sağ tıklayın

  • Çalışan kopyayla karşılaştır'ı seçin


0

Yeni sürümü indirene kadar gerçekten yapamazsınız. Bunun gibi sınırlamalar, son zamanlarda yeni bir tür kaynak kontrolünün popüler olmasının en büyük nedenlerinden biriydi. Buna merkezi olmayan kaynak kontrolü denir.
Bu yeni formla kendi yerel deponuz var ve daha sonra ana depodan değişiklikler alabilir ve üzerinde bir fark çalıştırabilirsiniz, yapılan değişiklikleri beğenmezseniz kendi havuzunuzu geri alabilir ve oradan gidebilirsiniz.

http://mercurial.selenic.com/

Ve evet, ürünleri değiştirmenizi önermek en uygun çözüm değil, ama daha az çözüm.


0

Yeni bir klasörde başka bir ödeme yapın.

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

Clean_working_copy kullanıyorsanız tekrar güncellemeyi unutmayın

svn update clean_working_copy

Ardından dosyanızı clean_working_copy dosyasındaki dosyayla karşılaştırın

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Veya tercih ettiğiniz 3 yönlü farkla (benimki 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

Bu çalışma, ancak bir scm daha entegre bir yol sağlamalıdır.
rds

0

bence

svn diff -r HEAD

neredeyse istediğini veriyor. Tek şey, + ve - 'nin beklediğinize göre tersine çevrilmiş olmasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.