Reintegrate hanya dapat digunakan jika revisi X hingga Y sebelumnya digabungkan dari <URL> untuk mengintegrasikan kembali sumber, tetapi ini tidak terjadi


127

Pernah menggunakan cabang SVN dengan Tortoise 1.6. Saya telah secara berkala menggabungkan batang ke cabang untuk tetap up to date.

Hari ini, saya pikir saya akan mengintegrasikan kembali cabang. Saya memilih "Reintegrate a branch" dari Tortoise dan menerima pesan kesalahan berikut:

Reintegrate hanya dapat digunakan jika revisi 4709 hingga 5019 sebelumnya digabungkan dari http://subversion/svn/saxdev/trunkke sumber reintegrate, tetapi ini tidak terjadi

Kemudian terdaftar sekitar 50 file dengan deskripsi seperti ini:

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

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

Revisi 5019 adalah revisi kepala. Revisi 4737 adalah revisi ketika saya membuat cabang.

Saya mendapatkan ini dari log untuk revisi 4737

Tindakan: Menambahkan Jalur: / cabang / qst Salin dari jalur: / trunk

Bagi saya, pesan kesalahan itu mengatakan bahwa cabang itu tidak aslinya dari trunk, yang tidak benar.

Ada ide?


1
Baik. Saya tidak benar-benar menggunakan Subversion lagi, tetapi akan mengambil kata Anda untuk itu!
colinjwebb

1
Terima kasih Bung. Saya pikir halaman lebih baik untuk itu.
Abu

Jawaban:


138

Jika Anda bekerja pada cabang dan tetap memperbaruinya dengan yang lain bekerja, Anda mungkin akan bingung ketika Anda membuat copy trunk yang berfungsi dan berusaha mengintegrasikan kembali cabang Anda jika Anda mendapatkan pesan seperti ini:

$ 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

Saya telah melihat sejumlah solusi di Google tetapi mereka membuat saya gugup sebagai 'peretasan'. Untuk mengatasinya saya memutuskan untuk melakukan apa yang mengisyaratkan subversi dalam pesan. Saya kembali ke cabang saya dan secara eksplisit menggabungkan revisi yang ditentukan:

$ 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.

Setelah saya melakukan ini, saya dapat kembali ke copy trunk yang berfungsi dan mengintegrasikan kembali cabang tanpa masalah.

saya harap ini membantu


16
Bagus! + msgstr "lakukan apa yang disiratkan subversi dalam pesan". :)
Adam

7
Saya setuju, jawaban yang lebih populer menggoda, tetapi mungkin lebih baik untuk memperbaikinya dengan benar. Saya harus pergi ke file bermasalah yang spesifik dan svn mergedari bagasi.
Steve Kehlet

1
Ini bekerja baik untuk saya. Trik utamanya adalah bahwa Tortoise tidak memberi tahu saya soal revisi. Setelah memutakhirkan klien baris perintah svn saya, saya bisa mendapatkannya untuk memberi saya pesan seperti yang Anda miliki, dan kemudian dapat menggabungkan revisi masalah dan kembali ke bagasi.
user12861

7
Ini tidak berfungsi untuk saya karena gabungan "hilang" yang terdaftar telah dilakukan di cabang (reintegrate source).
Sam

6
Walaupun jawaban ini terdengar masuk akal, itu tidak berhasil untuk saya. Saya terus mendapatkan pesan kesalahan yang sama. Apa yang membantu, adalah untuk menghapus properti svn: mergeinfo dari file yang terdaftar, seperti yang disarankan oleh jawaban yang diterima.
Jenny O'Reilly

85

[[Meskipun solusi saya telah bekerja untuk saya di masa lalu, itu dapat menyebabkan hasil yang tidak pantas dengan klien SVN modern. Dalam kasus kami kesalahan gabungan tampaknya merupakan produk sampingan dari otomatisasi yang membingungkan sejarah SVN kami dan bukan aktivitas nyata. Saya meninggalkan ini di sini untuk anak cucu tetapi tolong pertimbangkan jawaban yang diterima sebagai gantinya. ]]

Solusi bagi saya adalah menghapus svn:mergeinfoproperti yang entah bagaimana bisa dilampirkan ke file individual dalam hierarki.

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

Untuk menemukan file dengan informasi mergeinfo yang dapat Anda lakukan:

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

Kemudian Anda dapat menghapus properti mergeinfo:

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

Setelah saya menyelesaikan ini, gabungan saya dieksekusi dengan baik.


2
Ini benar-benar membantu saya menyelesaikan masalah saya tetapi masalah saya adalah karena menggabungkan revisi dari folder anak daripada melakukan ini pada folder root. Masalah saya adalah - Saya telah melakukan penggabungan tetapi folder root tidak mengenali bahwa penggabungan telah terjadi, ini berarti bahwa saya harus memperbarui prop mergeinfo secara manual dengan nomor revisi yang hilang. CATATAN Saya hanya bisa melakukan ini karena tidak ada perubahan file lain untuk revisi dan akan menyebabkan perilaku yang tidak terduga jika file lain perlu digabung - Anda harus menggabungkan kembali revisi jika ini masalahnya.
ExecutionOrder

5
Di TortoiseSVN, Anda dapat mengklik kanan file, pilih "TortoiseSVN" -> "Properties" dan Hapus properti svn: mergeinfo.
StarCub

3
@StephenKennedy Anda mungkin mengalami masalah menggunakan kembali cabang yang sudah diintegrasikan kembali. Jika demikian, periksa bagian terakhir svnbook.red-bean.com/en/1.7/… dimulai dengan "Setelah penggabungan --reintegrate dilakukan dari cabang ke trunk, cabang tidak lagi dapat digunakan untuk pekerjaan lebih lanjut."
AlexMA

6
+1. Anda tidak perlu menghapus semua mergeinfos; hanya yang memiliki rentang yang hilang. Lihat jawaban saya untuk cara menghapus hanya masalah mergeinfos dengan memfilter keluaran kesalahan TortoiseSVN.
Iain Samuel McLean Penatua

4
-1. Anda seharusnya tidak menghapus properti mergeinfo kecuali Anda benar-benar yakin tentang apa yang Anda lakukan. Banyak orang dapat membaca ini, menghapus properti ini, dan secara tidak sengaja memperkenalkan masalah lain. Paul Whipp memiliki jawaban yang lebih baik.
Bizmarck

15

Jika Anda mencoba mengintegrasikan kembali cabang Anda ke trunk dan Anda melihat kesalahan seperti ini dari TortoiseSVN:

Gabung pengujian reintegrate hanya gagal !: "Reintegrate hanya dapat digunakan jika beberapa revisi sebelumnya digabungkan dari trunk, tetapi ini tidak terjadi"

Klik pada teks kesalahan dan tekan CTRL+ A, CTRL+ Cuntuk menyalin semua teks.

Rekatkan teks ke dalam string di sini skrip PowerShell ini:

@"
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 $_" }

Script mengekstrak path relatif file dengan masalah mergeinfo dan menampilkan daftar perintah untuk memperbaiki masing-masing.

Anda mungkin harus mengubah 'userdata'nilai yang sesuai dengan struktur repositori Anda.

Jalankan skrip untuk menampilkan perintah yang Anda butuhkan untuk menghapus mergeinfos yang bermasalah.

Dalam contoh ini, skrip akan menghasilkan output ini:

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  

Pada prompt perintah Anda dapat menavigasi ke basis cabang (myproject) dan mengeksekusi perintah untuk menghapus masalah mergeinfos.

Anda akan melihat output seperti ini:

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'.

Seperti dalam jawaban Gray , sekarang Anda harus melakukan perubahan pada cabang dan mencoba untuk mengintegrasikan kembali. Kali ini seharusnya bekerja!


1
Jauh sebelum reintegrasi saya menggabungkan (tidak mengintegrasikan kembali) beberapa perubahan ke trunk dari cabang saya karena saya secara tidak sengaja berkomitmen ke cabang saya ketika saya bermaksud untuk berkomitmen trunk. Mungkinkah itu alasan di balik kesalahan reintegrasi ini?
Iain Samuel McLean Penatua

Itulah tepatnya yang tampaknya menyebabkan masalah ini dalam kasus saya. Terima kasih telah meluangkan waktu untuk menulis naskahnya!
Sam

@ Sam Senang Anda menemukannya bermanfaat. Apakah Anda perlu mengganti ruang literal dengan \s+untuk membuatnya bekerja untuk Anda?
Iain Samuel McLean Penatua

Semacam; itu lebih dari +yang dibutuhkan untuk itu bekerja untuk saya. Dalam kasus saya, beberapa baris memiliki dua ruang dan yang lain memiliki tiga, jadi dukungan untuk jumlah ruang variabel diperlukan. Saya tidak yakin mengapa saya mengubah ruang menjadi \s; yang mungkin tidak diperlukan, maaf untuk bagian itu!
Sam

@ Sam Jangan khawatir, tapi saya akan mengubahnya kembali ke ruang literal untuk saat ini sampai TortoiseSVN mulai mencampurnya dengan tab atau apa pun :-) Saya telah meninggalkannya +karena bermanfaat bagi Anda.
Iain Samuel McLean Penatua

11

Sebenarnya saya memperbaikinya menggunakan opsi "menggabungkan dua cabang yang berbeda" untuk menggabungkan batang dan cabang ke dalam copy pekerjaan saya. Kemudian saya melakukan itu ke bagasi.

Menakjubkan


4
Jawaban ini tidak benar-benar menjelaskan apa yang Anda lakukan. Tidak ada contoh, bahkan tautan ke bagian yang diperlukan dari manual ini.
zigg

Kalau dipikir-pikir, tidak. Namun, karena ini adalah jawaban saya sendiri pada hari yang sama dengan pertanyaan, itu adalah jawaban terbaik untuk beberapa bulan. Saya ingin menganggapnya masuk akal jika Anda masih menggunakan Tortoise SVN 1.6. Saya telah menerima jawaban Gray sebagai jawaban yang diterima sekarang.
colinjwebb

Contoh: svn menggabungkan ^ / tag / wx ^ / tag / yz. Kesalahan reintegrate muncul untuk saya ketika menggunakan 1,8 dan bergabung ke dalam trunk di mana sumber gabungan memiliki revisi khusus yang sebelumnya digabungkan ke dalamnya dari trunk. 1,8 muncul untuk memutuskan bahwa suatu penggabungan kembali sedang dicoba, padahal sebenarnya tidak. Penggabungan run-run dengan 1,6 akan berfungsi dengan baik, tetapi gabungan kedua URL juga cocok.
Nick

1
Skenario tepat yang gagal dengan 1,8 adalah menyalin tag dari beberapa revisi kembali untuk rilis patch, cherry memilih perubahan dari trunk ke backport dengan menggabungkan ke tag yang ditambal, membuat perubahan lebih lanjut ke tag yang ditambal, dan menggabungkan itu kembali ke dalam bagasi. Perubahan antara tag dasar dan versi yang ditambal adalah apa yang perlu digabungkan kembali ke trunk, dan penggabungan 2 URL berfungsi untuk itu.
Nick

Saya seharusnya membaca jawaban ini sebelum menghabiskan 3 hari mencoba memahami apa yang sedang terjadi. Saya masih tidak mengerti mengapa saya memiliki masalah ini tetapi curiga komentar dari @Nick adalah alasannya - dan sekarang semuanya berjalan baik, saya tidak akan mencari lebih jauh ...
Dave Richardson

6

Sesuatu yang bekerja untuk saya di tortoise SVN: alih-alih menggabungkan semua revisi dari cabang, pilih rentang tertentu dan pilih secara manual semua revisi Anda dari cabang.


1
Terima kasih atas ide dasarnya. Dari semua jawaban, ini bukan hanya yang paling tidak rumit, tapi itu satu-satunya yang bekerja untuk saya.
Redman

3

Lakukan persis seperti yang dikatakan SVN kepada Anda.

  1. Gabungkan cabang dari Reversion yang diberitahukan SVN kepada Anda
  2. Reintegrate dari Branch ke trunk

2
Tidak bekerja untuk saya. Perubahan sudah ada di cabang. Instruksi Anda terlihat seperti mereka harus bekerja untuk beberapa kasus, tetapi mereka tampaknya didasarkan pada asumsi, sehingga mereka tampaknya tidak universal.
Sam

1

Lihat juga jawaban saya di sini untuk pengalaman saya dengan kasus serupa. Saya tidak yakin apakah ini sumber masalah Anda, tetapi sepertinya Subversion 1.8 memiliki masalah dengan mergeinfo ketika dua perubahan saling membatalkan.


0

Saya mengalami masalah ini. Saya melakukan log SVN di cabang saya untuk menemukan apakah saya telah menggabungkan batang ke cabang saya.

Saya mencatat semua revisi.

Saya kemudian melakukan penggabungan cabang saya ke trunk dengan menentukan revisi secara manual. Saya menentukan semua rentang untuk mengecualikan revisi jika saya menggabungkan trunk. Saya berhasil menggabungkan cabang saya.

Saya harus melakukan beberapa reverts pada mergeinfo, tetapi kode saya digabung.

Saya segera menghapus cabang saya.


0

Saya mendapatkan kesalahan ini setelah menggunakan checkout sebagian cabang. Saya selalu memperbarui cabang dengan bagasi tetapi revisi bagasi untuk bagian-bagian dari cabang yang tidak diperiksa tentu saja tidak diperbarui. Cara mengatasinya adalah dengan melakukan checkout penuh cabang dan kemudian menggabungkan semua perubahan trunk. Setelah melakukan ini ke cabang saya bisa menggabungkan cabang ke bagasi dengan sukses.


0

Punya masalah ini

  • TortoiseSVN 1.9.7, Build 27907 - 64 Bit, 2017/08/08 19:34:38
  • Subversion 1.9.7, -release
  • April 1.5.2
  • apr-util 1.5.4
  • hamba 1.3.9
  • OpenSSL 1.0.2l 25 Mei 2017
  • zlib 1.2.8
  • SQLite 3.14.1

klik kanan pada cabang tempat Anda ingin menggabungkan (tetapi mendapatkan pesan ini) dan pilih opsi "perbarui untuk revisi" dan kemudian pada dialog yang terbuka (tangkapan layar di bawah) pilih revisi tersebut dan klik ok - setelah semua revisi sebelumnya digabungkan, Anda tidak akan menerima pesan ini

masukkan deskripsi gambar di sini

Menambahkan ini di sini untuk membantu seseorang yang menggunakan Tortoise SVN


-1

Saya tahu ini adalah posting lama, tetapi saya kesulitan untuk menyelesaikan masalah ini juga sampai saya menemukan bahwa file yang tercantum dalam pesan kesalahan memiliki masalah properti SVN.

Saya melakukan klik kanan pada file yang bermasalah: TortoiseSVN> Properties, dan menemukan bahwa file tersebut memiliki dua svn: mergeinfo, dan salah satunya tidak diwarisi dari data. Jadi saya menghapus mergeinfo itu.

Saya menggunakan TortoiseSVN 1.12.2, Build 28653 - 64 Bit.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.