Masalah SVN (Subversion) "File dijadwalkan untuk ditambahkan, tetapi hilang" - Menggunakan Versi

94

Saya menggunakan Versi untuk SVN.

Saya mencoba untuk berkomitmen dan mendapatkan pesan ini:

Komit gagal (detail ikuti): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' dijadwalkan untuk ditambahkan, tetapi tidak ada

Saya kira ini karena saya telah menambahkan file ke repo, dan kemudian menghapusnya melalui sistem file.

Saya ingin membuatnya cukup mencatat perubahan saya, dan menerapkan perubahan ke repo.

Bagaimana saya bisa mengatasi ini?

Mike
sumber

Jawaban:

121

Saya tidak yakin apa yang Anda coba lakukan: Jika Anda menambahkan file melalui

svn add myfile

Anda hanya memberi tahu svn untuk meletakkan file ini ke dalam repositori Anda ketika Anda melakukan komit berikutnya . Tidak ada perubahan pada repositori sebelum Anda mengetik

svn commit

Jika Anda menghapus file sebelum komit, svnmenyimpannya dalam catatannya (karena Anda menambahkannya) tetapi tidak dapat mengirimkannya ke repositori karena file tersebut tidak ada lagi.

Jadi apakah Anda ingin menyimpan file di repositori dan kemudian menghapusnya dari copy pekerjaan Anda: Dalam hal ini coba dapatkan kembali file Anda (dari sampah?), Lakukan komit dan hapus file setelahnya melalui

svn delete myfile
svn commit

Jika Anda ingin membatalkan adddan membuang file saja, Anda bisa ke file

svn revert myfile

yang memberi tahu svn(dalam hal ini) untuk membatalkan operasi tambahan.

EDIT

Maaf, saya tidak tahu bahwa Anda menggunakan klien GUI "Versi" untuk Max OSX. Jadi coba kembalikan pada direktori yang berisi menggunakan GUI atau lompat ke air dingin dan jalankan shell perintah Mac tersembunyi Anda :-) (ini disebut "Terminal" dalam bahasa Jerman OSX, tidak tahu bagaimana memunculkannya dalam bahasa Inggris Versi: kapan...)

MartinStettner
sumber
2
Masalahnya di sini adalah dia menggunakan GUI. Jika dia tetap dapat menggunakan baris perintah, dia hanya dapat svn rmmenggunakan file tersebut meskipun tidak ada di direktori.
Pikrass
Oke, saya tidak mengetahui klien "Versi" untuk OSX. Dia seharusnya bisa menggunakan "kembali", bukan? Itu akan bekerja dengan TortoiseSVN di Windows.
MartinStettner
pembersihan svn dan svn rms nanti ... Terima kasih atas bantuan Anda guys. Apakah ada cara untuk memberi tahu svn, "lihat, saya menambahkan beberapa file melalui manajer file default OS saya, dan sekarang, hal-hal di folder ini, adalah apa yang saya inginkan dari status repo ini ... sekarang biarkan terjadi ... jangan beri tahu saya apa yang bisa dan tidak bisa saya lakukan dengan file-file ini, tapi ya, lacak semuanya untuk saya. "?
Mike
1
An svn add *secara otomatis menambahkan semua file baru dan tidak berversi, dan svn commitsegera menyimpan perubahan ini ke repositori. Afaik tidak ada operasi yang setara untuk penghapusan, jadi jika Anda menghapus file, Anda harus menelepon svn rmsecara manual.
MartinStettner
Hanya FYI, saya juga punya masalah ini dan svn rm, bahkan dengan --forcetidak bekerja - katanya does not exist. Begitu svn revertjuga hal yang benar untuk dilakukan di sini.
Michel Müller
24

Saya memiliki masalah yang sama dengan Versi yang menampilkan pesan yang sama. Saya cukup mengklik kanan file yang melanggar dan memilih 'Kembalikan ...' dari menu klik kanan dan semuanya baik-baik saja.

Pada dasarnya Versi (sebenarnya Subversion) mengira Anda masih ingin menambahkan file, tetapi tidak dapat menemukannya karena Anda menghapusnya di sistem file. Opsi Kembalikan memberi tahu Subversion untuk melupakan menambahkannya.

mmopy
sumber
Saya mendapatkan kesalahan ini karena saya telah menghapus folder dari hierarki aplikasi. Saya baru saja menambahkan folder kosong dengan nama yang sama dan berhasil.
Yogi
10

Menambahkan file, dan kemudian menghapusnya adalah jenis operasi yang dianggap kesalahan - dan SVN memberi tahu Anda. Anda mengatakan kepadanya untuk mengharapkan beberapa data file dan kemudian tidak memberikannya ketika Anda berkomitmen, lampu merah berkedip dan sirene berbunyi!

Jawabannya adalah dengan membatalkan penambahan Anda, sebagai alternatif komit file dan kemudian gunakan 'svn rm' untuk menghapusnya dari sistem file dan repo.

gbjbaanb.dll
sumber
Saya mendapatkan ini dari Xcode di mana saya menambahkan file dan melakukan kesalahan atau sesuatu dan memberi tahu Xcode untuk menghapus (pindah ke sampah). Sayangnya Xcode membiarkannya dalam keadaan ini dan tidak melakukan rm dari svn untuk saya meskipun itu menghapus file ...
chadbag
3

Ini memecahkan masalah serupa saya. Saya menggunakannya untuk mengembalikan perubahan, lalu saya menambahkan semuanya dan melakukan perubahan di terminal dengan

svn add folder_path/*
svn commit -m "message"
jose
sumber
2

Hindari menggunakan Xcode untuk mengganti nama file dalam referensi folder. Jika Anda mengganti nama file menggunakan Xcode, itu akan ditandai untuk komit. Jika nanti Anda menghapusnya sebelum komit, Anda akan mendapatkan kesalahan ini.

Totoro
sumber
0

Saya baru saja menghapus file dari dalam VS, lalu dari 'Repository Explorer', saya menyalin file ke copy pekerjaan.

Behzad Sedighzadeh
sumber
0

Jika Anda menggunakan TortoiseSVN…

Dari jendela komit di bagian "Perubahan yang Dilakukan", Anda dapat memilih semua file yang melanggar, lalu klik kanan dan pilih hapus. Selesaikan komit dan file akan dihapus dari penambahan yang dijadwalkan.

Howard
sumber