Bagaimana cara kerja commit non rekursif Tortoise?

110

Saya telah memeriksa salinan cabang SVN (cabang saya) secara lokal yang telah saya gabungkan dari cabang yang berbeda (yang memiliki struktur folder yang sama sekali berbeda). Jadi pada dasarnya ada banyak sekali penghapusan (file lama) dan penambahan (file baru).

Ketika saya mencoba untuk mengkomit penggabungan ke repositori (ke cabang saya), Tortoise berkata

Komit ini tidak rekursif, dan ada folder yang dipindahkan / diganti namanya yang dipilih untuk komit. Pemindahan / penggantian nama seperti itu selalu dilakukan secara rekursif di repositori. Apakah Anda tetap ingin berkomitmen?

Apakah boleh melanjutkan commit ini? Jika tidak, apa yang harus saya lakukan agar tidak ada masalah?

Juga, untuk beberapa file yang saya tambahkan, saya telah membuat perubahan setelah menambahkan (jika ini mempengaruhi sifatnya).

pengguna1447725
sumber

Jawaban:

129

Ditemukan oleh Google cara memperbaikinya: tekan F5 di jendela commit (bukan di "popup peringatan")

Lihat http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 untuk detailnya.

Pada 26.08.2011 22:39, Ryan J Ollos menulis:

Selama beberapa bulan sekarang saya telah melihat kotak dialog berikut muncul saat memulai Komit. Ini sering terjadi ketika mencoba melakukan setelah penggabungan.

Hal yang saya perhatikan akhir-akhir ini adalah bahwa jika saya Membatalkan dan kemudian menyegarkan daftar file secara manual (F5), saya tidak melihat pesan lagi saat memulai komit untuk kedua kalinya. Komitmen tersebut tampaknya berhasil dengan baik dan tanpa masalah lebih lanjut.

Dialog komit memantau copy pekerjaan di utas latar belakang untuk pemberitahuan perubahan. Pemberitahuan seperti itu dikirim oleh OS jika file diubah / dipindahkan / diganti namanya / ... Jika pemberitahuan seperti itu diterima, dialog komit pertama-tama akan melakukan beberapa pemeriksaan sehingga dapat menghapus sebagian besar dari mereka. Jika pemberitahuan menunjukkan bahwa file yang tidak dicentang dan tidak terlihat dalam dialog komit entah bagaimana telah berubah, itu beralih kembali ke pengubahan non-rekursif. Itu karena jika Anda memiliki misalnya file yang dibuka di editor lain dan menyimpan perubahan Anda saat dialog komit terbuka, maka file itu akan dikomit juga meskipun Anda belum memeriksanya di dialog komit (itu tidak muncul sampai Anda menyegarkan dialog dengan F5).

Jadi, jika Anda sering melihat dialog peringatan itu, periksa apakah ada alat / aplikasi lain yang sedang berjalan yang mengubah file dalam copy pekerjaan Anda.

Dan seperti yang Anda perhatikan: jika Anda menekan F5, 'bendera non-rekursif' itu disetel ulang karena setelah penyegaran, Anda melihat semua file lagi - bahkan yang Anda ubah setelah Anda memulai dialog.

Stefan

ichaki5748
sumber
1
Tautan di jawaban sepertinya sudah mati. Ini yang valid dari Internet Archive web.archive.org/web/20150306224932/http://…
buzz3791
1
Saya baru saja mencoba menekan F5. Efeknya sekarang, daftar file dialog komit menampilkan sebagian besar file saya dua kali (dengan jalur dan nama yang persis sama), dan pesan peringatan masih muncul ketika saya mencoba untuk melakukan.
ATAU Mapper
26

Saya memiliki masalah yang sama tetapi mengatasinya dengan mengembalikan perubahan ke file yang telah saya tandai sebagai 'abaikan-saat-komit'

Setelah saya mengembalikan file-file ini, maka tortoisesvn dapat menjalankan semua file lain dari penggabungan

Kevin Brady
sumber
apa alasan sebenarnya? mengapa atau bagaimana file-file ini menyebabkan masalah?
Mannoj
5

Apakah boleh jika saya melanjutkan dengan commit ini?

Tidak, komit Anda akan mengabaikan semua perubahan di WC-tree dan hanya mencerminkan perubahan level root (penggabungan terputus).

Anda membuat kesalahan saat memeriksa non-rekursif pada awalnya. Anda bisa mencoba melakukan komit penuh yang baik menggunakan --depth infinityparameter di CLI atau menemukan sakelar ini di TortoiseSVN GUI.

svn commit --depth infinity . -m "Merge"
Malas Badger
sumber
1
"Anda membuat kesalahan saat memeriksa non-rekursif pada awalnya." Tidak, belum tentu. Saya memeriksa WC saya dengan cara yang sama seperti yang biasa saya lakukan, tetapi saya masih mengalami masalah ini tiba-tiba. Faktanya, ini tampaknya tidak menjadi kasus untuk salah satu solusi alternatif di bawah ini sama sekali.
Keith M
Ini sepenuhnya salah. Saya mendapatkan pesan ini dari waktu ke waktu dan saya memeriksa salinan pekerjaan saya secara rekursif dengan cara yang sama seperti yang selalu saya lakukan
1800 INFORMATION
1

Juga untuk beberapa file yang telah saya tambahkan SVN, saya telah membuat perubahan setelah menambahkan (Jika ini mempengaruhi sifatnya).

Dalam kasus saya, itulah yang menyebabkan pesan muncul, bahkan saya membatalkan pilihan file tersebut untuk komit.

Solusi buruk yang hanya berfungsi dengan aman jika hanya beberapa file yang terpengaruh:

  1. Buat salinan file yang diubah
  2. Kembalikan file yang diubah
  3. Lakukan penggabungan / reintegrasi
  4. Salin file yang diubah kembali ke tempat aslinya

Pengingat untuk diri sendiri: hanya mengintegrasikan kembali cabang jika target (trunk) bersih.

Thomas Weller
sumber
1

Sepertinya TortoiseSVN melakukan semacam pemeriksaan validitas sebelum memanggil komit. Bagus tapi pesan errornya sangat tidak jelas.

Ketika saya menghadapi masalah ini, saya kembali menggunakan baris perintah svn untuk melakukan. Komit gagal karena salah satu folder tidak diperbarui. Setelah memperbarui folder itu saja, saya menjalankan "svn commit" sekali lagi dan berhasil.

Sunting: PS: Sebelum Anda menggunakan coba ini, pastikan Anda tidak memiliki file yang ditandai sebagai "abaikan saat komit". "Abaikan saat komit" adalah khusus tortoise dan komit SVN mengambil perubahan ini juga.

sgowd
sumber
1

Hanya berpikir saya akan memposting ini karena itu berhasil untuk saya ...

Alasan hal ini terjadi adalah karena saya sebagian mengganti nama salah satu proyek baru yang saya buat dan untuk beberapa alasan semuanya muncul sebagai "Hilang" di layar komit.

Setelah saya menghapus proyek dan folder (yang telah diberi tanda centang oleh SVN) dan memasukkannya kembali sebagai proyek baru lagi, tiba-tiba semua "Hilang" berubah menjadi "Ditambahkan" dan komit berjalan dengan baik tanpa memperingatkan saya tentang apa pun .

Semoga ini membantu!

Danny Lager
sumber
1

Saya melihat masalah ini dan penyebabnya adalah beberapa file tambahan yang tidak memiliki status tambahan tanpa alasan yang jelas. Mereka 'normal' meskipun folder induk dengan benar ditampilkan sebagai 'ditambahkan'. Saya mengembalikan perubahan 'normal' itu dan kemudian melakukannya kembali secara manual. Ini membuat setiap item yang ditambahkan muncul dua kali dalam daftar komit tetapi itu menyelesaikan kesalahan dan semuanya tampak berfungsi dengan baik sekarang.

Itu tidak ada hubungannya dengan ignore-on-commit seperti di jawaban lain, ini hanya tampak seperti bug di TortoiseSVN.

Chris
sumber
Dari apa yang saya tahu, TortoiseSVN tidak memindahkan file secara rekursif. Memindahkan folder mengubah riwayat folder, tetapi bukan file di dalamnya. Ini berarti untuk memindahkan folder dengan TortoiseSVN Anda harus membuat ulang folder di tujuan yang diinginkan, menambahkan folder, lalu memindahkan konten folder asli ke yang baru. Atau cukup gunakan baris perintah.
Bradley Singer
Saya percaya ini berasal dari gabungan, bukan pindah. Kecuali jika itu adalah operasi serupa, saya tidak mengikuti.
Chris
0

Masalahnya bisa jadi, mergeinfo Anda dihapus oleh seseorang atau secara otomatis, karena info pindah ke atas pohon. Jika Anda ingin menggabungkannya lagi, ini akan berfungsi untuk saat ini. Tetapi semua yang lain akan mendapatkan masalah dengan cabang mereka yang tidak digabungkan. SVN akan kehilangan beberapa kode dan menggabungkan kembali kode yang sudah dikirimkan.

Jadi mengembalikan file-file itu dan mengubahnya lagi bisa berfungsi, tetapi Anda tidak boleh hanya melakukan perubahan.

Nicolas
sumber
0

Saya baru saja mengalami masalah yang sama. Alih-alih memilih semua file, saya mengklik berversi dan semuanya bekerja dengan baik. Dalam kasus saya, opsi berversi memilih semua file, jadi semuanya baik-baik saja sekarang.

Bruno Milanez
sumber
-4

saya tidak tahu pilihan untuk tortoisesvn tetapi u bisa menggunakan baris perintah

svn commit --non-recursive [folder]

thats sould work as you like it to work greeings

yellowsir
sumber
Jawaban lain mengatakan ini tidak akan melakukan apa yang sebenarnya ingin Anda lakukan.
Keith M