"Svn update" komutunu vermeden önce depodan nelerin güncelleneceğini nasıl görebilirim?


115

Eclipse'den bir SVN deposuna çok sayıda dosyada değişiklik yaptım.

Daha sonra, bu değişiklikleri depodan oradaki dizine güncellemek istediğim linux kutusundaki web sitesi dizinine gidiyorum.

Eklediğim ve değiştirdiğim tüm dosyalarımla birlikte "project100" altındaki dizinleri güncelleyecek "svn update project100" demek istiyorum.

ANCAK, yapmadığım değişiklikleri mutlaka güncellemek istemiyorum. Bu yüzden "svn status project100" diyebileceğimi düşündüm ama bunu yaptığımda, yapılacak değişikliklerin tamamen farklı bir listesini alıyorum, hiçbiri listede yok, ki bu garip.

Bu nedenle, web dizininde yalnızca benim değişikliklerimin güncellendiğinden emin olmak için, yaptığım bir değişiklik olduğunu bildiğim her dizine gitmeye ve yalnızca bu dosyaları açıkça güncellemeye zorlanıyorum, örneğin "svn update newfile1.php" vb. ki bu sıkıcı.

Burada standart çalışma prosedürüne kimse ışık tutabilir mi, yani "svn güncelleme" komutunu çalıştırmadan önce yapılacak tüm değişikliklerin doğru bir listesini nasıl alabilirim? Bunun "durum" komutu olduğunu sanıyordum.

Yanıtlar:


167

Deneyin:

svn status --show-updates

veya (aynı fakat daha kısa):

svn status -u

9
veya daha kısa: svn st -u
Kenyakorn Ketsombut

Ne X 'çıktı ortalama s?
IgorGanapolsky

1
Ayrıca şunu kullanın: svn status -q -u... Yalnızca arşive ait dosyalarla ilgili güncelleme değişikliklerini ve yerel değişiklikleri gösterir. Depo dışı dosyalardan soru işareti (?) Almazsınız.
olacak

56

Çalışan kopyanız ile en son svn sunucu deposu arasında ne bilmek istediğinize bağlı olarak, yerel çalışma kopyanızı güncellemeden şunları yapabilirsiniz:

svn sunucu deposunda neyin değiştiğini öğrenmek istiyorsanız, şu komutu çalıştırın:

$ svn st -u

Aynı dosyanın hem yerel çalışma kopyanızda hem de svn sunucu deposunda değiştirilip değiştirilmediğini bilmek istiyorsanız, şu komutu çalıştırın:

$ svn st -u | grep -E '^M {7}\*'

Belirli bir revizyon ile HEAD arasında değiştirilen dosyaların listesini almak istiyorsanız, şu komutu çalıştırın:

$ svn diff -r revisionNumber:HEAD --summarize

belirli revizyonlar arasında değiştirilen dosyaların bir listesini almak istiyorsanız, şu komutu çalıştırın:

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

nelerin güncelleneceğini görmek istiyorsanız (gerçekten güncellemeden), şu komutu çalıştırın:

$ svn merge --dry-run -r BASE:HEAD .

svn sunucu deposunda belirli bir dosyanın hangi içeriğinin, çalışan kopyanıza kıyasla değiştirildiğini bilmek istiyorsanız, şu komutu çalıştırın:

$ svn diff -r BASE:HEAD ./pathToYour/file

svn sunucu deposunda tüm dosyaların hangi içeriğinin, çalışan kopyanıza kıyasla değiştirildiğini bilmek istiyorsanız, şu komutu çalıştırın:

$ svn diff -r BASE:HEAD .

43

Nelerin güncelleneceğini (gerçekte güncellemeden) şunları yayınlayarak görebilirsiniz:

svn merge --dry-run -r BASE:HEAD .

Daha fazla ayrıntı burada .


Yukarıdakiler benim için işe yaramadı, koşmak zorunda kaldısvn merge --dry-run --revision BASE:HEAD .
Znarkus

3
"Svn: E195020: Karma revizyon çalışma kopyasıyla birleştirilemiyor [16032: 16061]; önce güncellemeyi deneyin"
Hubert Grzeskowiak

Harika cevap - çok kötü, karışık revizyon çalışma kopyalarında işe yaramıyor .. Bu beni öğrenecek
Gerard ONeill

2
@HubertGrzeskowiak - İroniyi seviyorum q: how do I ... without doing an update?a: first, do an update, then ...:) :) :)
Jesse Chisholm

17

Aradığım şey buydu. Önce Google'ı kontrol svn helpettim , ancak benim için geldi :)

svn diff -r BASE:HEAD .


0

Çalışma kopyanız ile depo arasındaki farkı görmek için 'svn diff'i kullanabilirsiniz.


9
Yanlış. Bunlar yalnızca sizin aranızdaki ve arşivle en son senkronize ettiğiniz zaman arasındaki farkları listeler. Bu arada diğer insanların arşive yaptığı herhangi bir fark görmeyeceksiniz. OP bir yoluyla bunları uygulamadan, bu değişikliklerin neler olduğunu bilmek istiyorsvn update
di ve

@Andrew, OP'nin teslim alınan dosyalardan HEAD veya depodaki en üst sürüm olarak teslim edilenlere kadar olan farkı görmek için 'svn diff -r HEAD URL'yi çalıştırmasını önermeyi amaçlıyordu.
Mac

0

Teorik olarak, kendi kullanımınız için oluşturduğunuz bir dalda tüm değişikliklerinizi yapabilirsiniz. O zaman bunu taahhüt eden tek kişinin siz olduğunuza makul ölçüde emin olursunuz.

IMHO özellik geliştirme bu şekilde yapılmalıdır.

Daha sonra bu hedef makineyi ana hat yerine bu şubeden güncelleyebilirsiniz.

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.