Yeniden entegre etme yalnızca, X ile Y arasındaki revizyonlar daha önce kaynağı yeniden entegre etmek için <URL> 'den birleştirildiyse kullanılabilir, ancak durum böyle değil


127

Tortoise 1.6 ile SVN şubeleri kullanılıyor. Güncel kalmasını sağlamak için periyodik olarak gövdeyi şubeye birleştiriyorum.

Bugün şubeyi yeniden entegre edeceğimi düşündüm. Tortoise'den "Bir dalı yeniden entegre et" i seçtim ve aşağıdaki hata mesajını aldım:

Yeniden http://subversion/svn/saxdev/trunkentegre etme yalnızca 4709'dan 5019'a kadar olan revizyonlar daha önce yeniden entegre kaynağından birleştirildiyse kullanılabilir , ancak durum böyle değildir

Daha sonra aşağıdaki gibi açıklamalarla yaklaşık 50 dosya listeledi:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

Revizyon 5019, baş revizyonudur. Revizyon 4737, bir şube oluşturduğumdaki revizyondu.

Bunu 4737 numaralı revizyon için günlükten aldım

Eylem: Yol eklendi: / branch / qst Yoldan kopyala: / trunk

Bana göre, bu hata mesajı, dalın orijinal olarak gövdeden olmadığını söylüyor, bu doğru değil.

Herhangi bir fikir?


1
Tamam. Artık Subversion'ı gerçekten kullanmıyorum, ancak sözünüze güveneceğim!
colinjwebb

1
Tesekkurler dostum. Bunun için sayfanın daha iyi olduğunu düşünüyorum.
Gray

Yanıtlar:


138

Bir şube üzerinde çalışıyorsanız ve bunu başkalarının çalışmalarıyla güncel tutuyorsanız, bagajın çalışan bir kopyasını oluşturduğunuzda ve şuna benzer bir mesaj alırsanız şubenizi yeniden entegre etmeye çalıştığınızda şaşkın olabilirsiniz:

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

Google'da bir dizi geçici çözüm gördüm ama bunlar beni "hack" olarak tedirgin etti. Bunu ele almak için mesajda yıkımın ima ettiği şeyi yapmaya karar verdim. Şubeme geri döndüm ve belirtilen revizyonları açıkça birleştirdim:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

Bunu yaptıktan sonra, gövdenin çalışan kopyasına dönebildim ve şubeyi sorunsuz bir şekilde yeniden entegre edebildim.

Umarım bu yardımcı olur


16
Güzel! "mesajda yıkımın ima ettiği şeyi yapın". :)
Adam

7
Katılıyorum, daha popüler cevap caziptir, ancak muhtemelen doğru şekilde düzeltmek daha iyidir. Belirli sorunlu dosyaya ve bagajdan gitmem gerekiyordu svn merge.
Steve Kehlet

1
Bu benim için harika çalıştı. Asıl numara, Kaplumbağanın bana sorunun revizyonunu anlatmamasıydı. Komut satırı svn istemcimi yükselttikten sonra, bana sizin sahip olduğunuz gibi bir mesaj vermesini sağlayabildim ve ardından sorun revizyonunu birleştirip ana hatlara geri dönebildim.
user12861

7
Bu benim için işe yaramadı çünkü listelenen "eksik" birleştirmeler zaten dalda yapılmıştı (kaynağı yeniden entegre et).
Sam

6
Bu cevap makul görünse de benim için işe yaramadı. Aynı hata mesajlarını almaya devam ettim. Yardımcı olan şey, svn: mergeinfo özelliklerini listelenen dosyalardan kaldırmak oldu, tıpkı kabul edilen yanıtın önerdiği gibi.
Jenny O'Reilly

85

[[Çözümüm geçmişte benim için işe yaramış olsa da, modern SVN istemcilerinde uygunsuz sonuçlara yol açabilir. Bizim durumumuzda, birleştirme hataları, gerçek faaliyet değil, SVN geçmişimizi karıştıran otomasyonların yan ürünleri gibi görünüyordu. Bunu gelecek nesillere bırakıyorum ama lütfen kabul edilen cevabı düşünün. ]]

Benim için çözüm svn:mergeinfo, hiyerarşideki ayrı dosyalara bir şekilde eklenen tüm özellikleri kaldırmaktı .

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

Birleştirme bilgisi bilgilerine sahip dosyaları bulmak için şunları yapabilirsiniz:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

Daha sonra birleştirme bilgisi özelliklerini kaldırabilirsiniz:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

Bunu tamamladıktan sonra, birleştirmem iyi yapıldı.


2
Bu gerçekten sorunumu çözmeme yardımcı oldu, ancak benimki bunu kök klasörde yapmak yerine bir alt klasörden bir revizyonu birleştirmekten kaynaklanıyordu. Sorunum şuydu - Birleştirme işlemini gerçekleştirmiştim, ancak kök klasör birleştirmenin gerçekleştiğini algılamamıştı, bu, birleştirme bilgisini eksik revizyon numaralarıyla manuel olarak güncellemem gerektiği anlamına geliyordu. NOT Bunu yalnızca revizyon için başka dosya değişikliği olmadığı ve diğer dosyaların birleştirilmesi gerektiğinde beklenmeyen davranışlara neden olacağı için yapabildim - bu durumda revizyonları yeniden birleştirmeniz gerekecektir.
ExecutionOrder

5
TortoiseSVN'de, dosyayı sağ tıklayıp "TortoiseSVN" -> "Özellikler" öğesini seçebilir ve svn: mergeinfo özelliğini silebilirsiniz.
StarCub

3
@StephenKennedy Zaten yeniden entegre edilmiş bir şubeyi yeniden kullanma sorunuyla karşılaşıyor olabilirsiniz. Eğer öyleyse, svnbook.red-bean.com/en/1.7/… 'nin "şubeden diğerine bir --reintegrate birleştirme yapıldıktan sonra, dal daha fazla çalışma için artık kullanılamaz" ile başlayan son bölümüne bakın .
AlexMA

6
+1. Tüm birleştirme bilgilerini silmenize gerek yoktur; yalnızca aralıkları eksik olanlar. Bkz Cevabımı bir yol TortoiseSVN hata çıktı filtreleyerek sadece sorun mergeinfos silmek için.
Iain Samuel McLean Elder

4
-1. Ne yaptığınızdan gerçekten emin değilseniz mergeinfo özelliklerini kaldırmamalısınız. Pek çok kişi bunu okuyabilir, bu özellikleri silebilir ve istemeden başka sorunlar ortaya çıkarabilir. Paul Whipp'in daha iyi bir cevabı var.
Bizmarck

15

Dalınızı gövdeye yeniden entegre etmeye çalışırsanız ve TortoiseSVN'de buna benzer hatalar görürseniz:

Birleştirme yeniden birleştirme testi yalnızca başarısız oldu!: "Yeniden entegre etme yalnızca bazı revizyonlar daha önce ana hattan birleştirildiyse kullanılabilir, ancak durum böyle değil"

Tüm metni kopyalamak için hata metnine tıklayın ve CTRL+ A, CTRL+ tuşlarına basın C.

Metni bu PowerShell betiğinin buradaki dizesine yapıştırın:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

Komut dosyası, sorunlu birleştirme bilgisi içeren dosyaların ilgili yollarını çıkarır ve her birini düzeltmek için bir komut listesi çıkarır.

'userdata'Depo yapınıza uyması için değeri değiştirmeniz gerekebilir .

Sorun birleştirme bilgilerini kaldırmak için ihtiyacınız olan komutların çıktısını almak için komut dosyasını çalıştırın.

Bu örnekte, komut dosyası şu çıktıyı üretecektir:

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

Komut isteminde, dal tabanına (myproject) gidebilir ve sorunlu birleştirme bilgilerini silmek için komutları çalıştırabilirsiniz.

Şu şekilde çıktı görmelisiniz:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

Olduğu gibi Gray'in cevap , şimdi şube değişiklik taahhüt ve tekrar tekrar birleştirilmesi için çalışmalısınız. Bu sefer işe yaramalı!


1
Yeniden entegrasyondan çok önce, şubemden bazı değişiklikleri ana gövdede birleştirdim (yeniden entegre etmedim) çünkü gövdeye bağlanmak istediğimde yanlışlıkla şubeme taahhüt verdim. Bu yeniden bütünleştirme hatalarının nedeni bu olabilir mi?
Iain Samuel McLean Elder

Benim durumumda bu soruna neden olduğu anlaşılan tam olarak budur. Senaryoyu yazmaya zaman ayırdığınız için teşekkürler!
Sam

@Sam yararlı bulduğuna sevindim. Sizin \s+için çalışmasını sağlamak için gerçek alanı a ile değiştirmeniz gerekiyor mu?
Iain Samuel McLean Elder

Tür; +benim için işe yaraması için daha çok ihtiyaç duyulan şeydi. Benim durumumda, bazı satırlarda iki boşluk vardı ve diğerlerinde üç boşluk vardı, bu nedenle değişken sayıda boşluk desteği gerekiyordu. Alanı neden a olarak değiştirdiğimden emin değilim \s; Muhtemelen gerekli değildi, o kısım için çok üzgünüm!
Sam

@Sam Endişelenmeyin, ancak TortoiseSVN sekmelerle veya her neyse onu karıştırmaya başlayana kadar onu şimdilik gerçek bir alana değiştireceğim :-) +sizin için yararlı olduğu için bıraktım .
Iain Samuel McLean Elder

11

Aslında bunu, gövde ve dalı çalışma kopyamla birleştirmek için "iki farklı dalı birleştir" seçeneğini kullanarak düzelttim. Sonra bunu bagaja verdim.

harika


4
Bu cevap gerçekten ne yaptığınızı açıklamıyor. Örnek yok, kılavuzun zorunlu bölümüne bir bağlantı bile yok.
zigg

Geriye dönüp bakıldığında, hayır öyle değil. Ancak bu soru ile aynı gün kendi cevabım olduğu için birkaç ay boyunca en iyi cevap buydu. Yine de Tortoise SVN 1.6 kullanıyorsanız mantıklı olduğunu varsaymak isterim. Bunun yerine Gray'in cevabını şimdi kabul edilen cevap olarak kabul ettim.
colinjwebb

Örnek: svn birleştirme ^ / tags / wx ^ / tags / yz. Yeniden entegre etme hatası, 1.8 kullanırken ve birleştirme kaynağının daha önce gövdeden belirli bir revizyona sahip olduğu ana hat ile birleştirildiğinde benim için ortaya çıktı. 1.8, bir yeniden entegre birleştirme girişiminde bulunulduğuna karar veriyor gibi görünüyordu, ama bu değildi. 1.6 ile kuru çalıştırma birleştirme iyi sonuç verir, ancak iki URL birleştirme de uygundur.
Nick

1
1.8 ile başarısız olan kesin senaryo, bir yama sürümü için bazı revizyonlardan bir etiketi kopyalamak, kirazın yamalı etiketle birleştirme yoluyla bagajdan arka porta bir değişiklik seçmesi, yamalı etikette başka bir değişiklik yapması ve bunu geri birleştirmekti. bagaja. Temel etiket ve yamalı sürüm arasındaki değişiklikler, ana gövdeye geri birleştirilmesi gereken şeydir ve 2 URL birleştirme bunun için bir tedavi sağlar.
Nick

Neler olduğunu anlamaya çalışmak için 3 gün harcamadan önce bu cevabı okumalıydım. Hala neden bu problemi yaşadığımı anlamıyorum ama sebebin @ Nick'ten gelen yorum olduğundan şüpheleniyorum - ve şimdi işler yolunda gitmeye devam etmeyeceğim ...
Dave Richardson

6

Kaplumbağa SVN'de benim için çalışan bir şey: Daldaki tüm revizyonları birleştirmek yerine, belirli aralık seçin ve tüm revizyonlarınızı şubeden manuel olarak seçin.


1
Böyle basit bir fikir için teşekkür ederim. Tüm cevaplar arasında, bu sadece en az karmaşık değildi, aynı zamanda benim için işe yarayan tek cevap oydu.
redman

3

Sadece SVN'nin size söylediği gibi yapın.

  1. SVN'nin size söylediği Reversion'daki dalı birleştirin
  2. Şubeden gövdeye yeniden entegre edin

2
Benim için çalışmadı. Değişiklikler dalda zaten vardı. Talimatlarınız bazı durumlarda işe yaraması gerektiği gibi görünüyor, ancak bir varsayıma dayanıyor gibi görünüyor, bu yüzden evrensel görünmüyorlar.
Sam

1

Ayrıca benim cevap bakınız burada da benzer bir durum ile benim deneyim için. Sorunun kaynağının bu olup olmadığından emin değilim, ama görünüşe göre Subversion 1.8, iki değişiklik birbirini iptal ettiğinde mergeinfo ile ilgili sorunlar yaşıyor.


0

Bu sorunla karşılaştım. Şubemde gövdeyi şubemle birleştirip birleştirmediğimi bulmak için şubemde bir SVN kaydı yaptım.

Tüm revizyonları not ettim.

Daha sonra revizyonları manuel olarak belirterek şubemi ana hat ile birleştirdim. Ben gövdeyi birleştirdiğim revizyonları hariç tutmak için tüm aralıkları belirledim. Şubemi birleştirmeyi başardım.

Mergeinfo'da bazı geri dönüşler yapmak zorunda kaldım, ancak kodumu birleştirdim.

Şubemi hemen sildim.


0

Bu hatayı bir şubenin kısmi kontrolünü kullandıktan sonra aldım. Şubeyi ana hat ile güncel tutuyordum, ancak şubenin kontrol edilmeyen kısımlarının gövde revizyonları elbette güncellenmiyordu. Düzeltme, şubenin tam bir kontrolünü yapmak ve ardından tüm gövde değişikliklerinde birleştirmekti. Bunları şubeye işledikten sonra dalı başarıyla gövdeye birleştirebildim.


0

Bu sorunu açtım

  • TortoiseSVN 1.9.7, Yapı 27907 - 64 Bit, 2017/08/08 19:34:38
  • Subversion 1.9.7, -release
  • Nisan 1.5.2
  • apr-util 1.5.4
  • serf 1.3.9
  • OpenSSL 1.0.2l 25 Mayıs 2017
  • zlib 1.2.8
  • SQLite 3.14.1

Birleştirmek istediğiniz şubeye sağ tıklayın (ancak bu mesajı alırsınız) ve "revizyona güncelle" seçeneğini seçin ve ardından açılan iletişim kutusunda (aşağıdaki ekran görüntüsü) bu revizyonları seçin ve Tamam'a tıklayın - önceki tüm revizyonlar birleştirildikten sonra, bu mesajı alamazsın

görüntü açıklamasını buraya girin

Tortoise SVN kullanan birine yardım etmek için bunu buraya eklemek


-1

Bunun eski bir gönderi olduğunu biliyorum, ancak hata mesajında ​​listelenen dosyaların SVN özelliği sorunu olduğunu öğrenene kadar bu sorunu çözmek için mücadele ediyordum.

Sorunlu dosyalara sağ tıkladım: TortoiseSVN> Properties ve dosyanın iki svn: mergeinfo'ya sahip olduğunu ve bunlardan birinin veriden miras almadığını gördüm. Ben de bu birleştirme bilgisini kaldırdım.

TortoiseSVN 1.12.2, Build 28653 - 64 Bit kullanıyorum.

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.