SVN (Subversion) Problem „Plik jest zaplanowany do dodania, ale go brakuje” - Korzystanie z wersji


97

Używam wersji dla SVN.

Próbuję zatwierdzić i otrzymać tę wiadomość:

Zatwierdzenie nie powiodło się (szczegóły poniżej): „/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf” jest zaplanowane do dodania, ale brakuje go

Przypuszczam, że dzieje się tak dlatego, że dodałem pliki do repozytorium, a następnie usunąłem je za pośrednictwem systemu plików.

Chciałbym, żeby po prostu zanotował moją zmianę i zastosował ją do repozytorium.

Jak mogę to obejść?

Odpowiedzi:


123

Nie jestem pewien, co próbujesz zrobić: jeśli dodałeś plik przez

svn add myfile

powiedziałeś svn tylko, żeby umieścił ten plik w twoim repozytorium, kiedy wykonujesz następny commit . Nie ma żadnych zmian w repozytorium przed wpisaniem pliku

svn commit

Jeśli usuniesz plik przed zatwierdzeniem, umieść svngo w swoich rekordach (ponieważ go dodałeś), ale nie możesz wysłać go do repozytorium, ponieważ plik już nie istnieje.

Więc albo chcesz zapisać plik w repozytorium, a następnie usunąć go z kopii roboczej: W tym przypadku spróbuj odzyskać plik (z kosza?), Wykonaj zatwierdzenie i następnie usuń plik za pomocą

svn delete myfile
svn commit

Jeśli chcesz cofnąć addi po prostu wyrzucić plik, możesz utworzyć plik

svn revert myfile

co mówi svn(w tym przypadku), aby cofnąć operację dodawania.

EDYTOWAĆ

Przepraszam, nie wiedziałem, że używasz klienta GUI „Wersje” dla Max OSX. Więc albo spróbuj powrócić do katalogu zawierającego za pomocą GUI lub wskocz do zimnej wody i odpal swoją ukrytą powłokę poleceń Maca :-) (nazywa się "Terminal" w niemieckim OSX, nie mam pojęcia jak wywołać to po angielsku wersja...)


2
Problem w tym, że używa GUI. Jeśli i tak może użyć wiersza poleceń, mógłby po prostu svn rmplik, nawet jeśli nie istnieje w katalogu.
Pikrass

Ok, nie wiedziałem o kliencie „Wersje” dla OSX. I tak powinien móc użyć „revert”, prawda? To działałoby z TortoiseSVN w systemie Windows.
MartinStettner,

Porządki svn i rms svn później ... Dzięki za pomoc. Czy jest sposób, aby powiedzieć svn, "spójrz, dodałem kilka plików za pośrednictwem domyślnego menedżera plików mojego systemu operacyjnego, a teraz zawartość tego folderu jest taka, jak chcę, aby obecny stan tego repozytorium był ... teraz pozwól na to zdarza się ... nie mów mi, co mogę, a czego nie mogę zrobić z tymi plikami, ale tak, śledź to wszystko dla mnie. ”?
Mike

1
svn add *Automatycznie dodaje wszystkie nowe, niewersjonowane akta, svn commitnatychmiast zapisuje te zmiany do repozytorium. Afaik nie ma równoważnej operacji do usunięcia, więc jeśli usuniesz pliki, musisz zadzwonić svn rmręcznie.
MartinStettner

Po prostu FYI, ja też miałem ten problem i svn rmnawet z --forcenie działa - mówi does not exist. Więc svn revertjest to właściwa rzecz do zrobienia tutaj.
Michel Müller

25

Miałem ten sam problem z wersjami wyświetlającymi ten sam komunikat. Po prostu kliknąłem szkodliwe pliki i wybrałem „Przywróć ...” z menu prawego przycisku myszy i wszystko poszło dobrze.

Zasadniczo wersja (a właściwie Subversion) uważa, że ​​nadal chcesz dodać plik, ale nie może go znaleźć, ponieważ usunąłeś go w systemie plików. Opcja Przywróć mówi Subversion, aby zapomniał o dodaniu go.


Otrzymałem ten błąd, ponieważ usunąłem folder z hierarchii aplikacji. Właśnie dodałem pusty folder o tej samej nazwie i zadziałało.
Yogi

10

Dodanie pliku, a następnie usunięcie go to rodzaj operacji, która jest uważana za błąd - o czym informuje SVN. Powiedziałeś mu, aby oczekiwał pewnych danych z pliku, a następnie nie podawał ich podczas zatwierdzania, czerwone światła migają, a syreny gasną!

Odpowiedzią jest cofnięcie dodania, alternatywnie zatwierdzenie pliku, a następnie użycie polecenia „svn rm”, aby usunąć go z systemu plików i repozytorium.


Dostaję to z Xcode, gdzie dodaję plik i zrobiłem to źle lub coś i mówię Xcode, aby usunął (przenieś do kosza). Niestety Xcode pozostawia go w tym stanie i nie robi dla mnie rm z svn, chociaż usuwa plik ...
chadbag

3

To rozwiązało mój podobny problem. Użyłem go do cofnięcia zmian, następnie dodałem wszystko i zatwierdziłem zmiany w terminalu za pomocą

svn add folder_path/*
svn commit -m "message"

2

Unikaj używania Xcode do zmiany nazw plików w odwołaniu do folderu. Jeśli zmienisz nazwę pliku za pomocą Xcode, zostanie on oznaczony do zatwierdzenia. Jeśli później usuniesz go przed zatwierdzeniem, skończysz z tym błędem.


0

Właśnie usunąłem plik z poziomu VS, a następnie z „Eksploratora repozytorium” skopiowałem plik do kopii roboczej.


0

Jeśli używasz TortoiseSVN…

W oknie zatwierdzenia w sekcji „Dokonane zmiany” możesz wybrać wszystkie pliki naruszające zasady, a następnie kliknąć prawym przyciskiem myszy i wybrać opcję Usuń. Zakończ zatwierdzanie, a pliki zostaną usunięte z zaplanowanych dodatków.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.