Jak działa nierekurencyjne zatwierdzenie Tortoise?


110

Pobrałem lokalnie kopię oddziału SVN (moja gałąź), do której połączyłem się z innej gałęzi (która ma zupełnie inną strukturę folderów). Zasadniczo jest więc dużo usunięć (starych plików) i dodań (nowych plików).

Kiedy próbuję zatwierdzić scalanie do repozytorium (do mojej gałęzi), mówi Tortoise

To zatwierdzenie nie jest rekurencyjne i istnieją foldery przeniesione / o zmienionych nazwach wybrane do zatwierdzenia. Takie ruchy / zmiany nazw są zawsze wykonywane rekurencyjnie w repozytorium. Czy mimo to chcesz się zaangażować?

Czy można kontynuować to zobowiązanie? Jeśli nie, co mam zrobić, żeby nie było problemu?

Ponadto w przypadku niektórych plików, które dodałem, wprowadziłem zmiany po dodaniu (jeśli ma to wpływ na naturę).

Odpowiedzi:


129

Znalezione przez Google, jak to naprawić: naciśnij F5 w oknie zatwierdzenia (nie w „wyskakującym okienku ostrzegawczym”)

Szczegółowe informacje można znaleźć pod adresem http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 .

26.08.2011 22:39 Ryan J Ollos napisał:

Od kilku miesięcy widzę następujące okno dialogowe podczas inicjowania Commit. Zdarza się to często przy próbie zatwierdzenia po scaleniu.

Ostatnio zauważyłem jednak, że jeśli anuluję, a następnie ręcznie odświeżę listę plików (F5), nie widzę tego komunikatu ponownie przy inicjowaniu zatwierdzenia po raz drugi. Wydaje się, że zatwierdzenie zakończyło się powodzeniem i bez dalszych problemów.

Okno dialogowe zatwierdzenia monitoruje kopię roboczą w wątku w tle pod kątem powiadomień o zmianach. Takie powiadomienia są wysyłane przez system operacyjny w przypadku modyfikacji / przeniesienia / zmiany nazwy plików / ... Jeśli takie powiadomienie zostanie odebrane, okno dialogowe zatwierdzenia najpierw wykonuje kilka testów, aby większość z nich mogła zostać usunięta. Jeśli powiadomienie wskazuje, że plik, który nie jest sprawdzony i nie jest widoczny w oknie dialogowym zatwierdzenia, uległ jakimś zmianom, przełącza się z powrotem na zatwierdzanie nierekurencyjne. Dzieje się tak ponieważ jeśli masz np. Plik otwarty w innym edytorze i zapiszesz swoje zmiany gdy okno dialogowe zatwierdzenia jest otwarte to ten plik również zostałby zatwierdzony nawet jeśli nie zaznaczyłeś tego w oknie zatwierdzenia (nie pojawia się dopóki nie odświeżysz okna za pomocą F5).

Jeśli więc często widzisz to okno dialogowe z ostrzeżeniem, sprawdź, czy jest uruchomione inne narzędzie / aplikacja, która modyfikuje pliki w kopii roboczej.

I jak zauważyłeś: jeśli naciśniesz F5, ta `` flaga nierekurencyjna '' jest resetowana, ponieważ po odświeżeniu ponownie zobaczysz wszystkie pliki - nawet te zmodyfikowane po uruchomieniu okna dialogowego.

Stefan


1
Link w odpowiedzi wydaje się martwy. Oto poprawne z archiwum internetowego web.archive.org/web/20150306224932/http://…
buzz3791

1
Po prostu próbowałem nacisnąć klawisz F5. Efekt jest taki, że teraz lista plików w oknie dialogowym zatwierdzenia pokazuje większość moich plików dwukrotnie (z dokładnie taką samą ścieżką i nazwą), a komunikat ostrzegawczy nadal pojawia się, gdy próbuję zatwierdzić.
LUB Mapper

26

Miałem ten sam problem, ale rozwiązałem go, przywracając zmiany w plikach, które zaznaczyłem jako „ignoruj ​​przy zatwierdzaniu”

Kiedy przywróciłem te pliki, tortoisesvn był w stanie zatwierdzić wszystkie inne pliki z scalenia


jaki jest prawdziwy powód? dlaczego lub w jaki sposób te pliki powodują problem?
Mannoj

5

Czy to w porządku, jeśli będę kontynuować to zatwierdzenie?

Nie, twoje zatwierdzenie zignoruje wszystkie zmiany w drzewie WC i odzwierciedli tylko zmiany na poziomie głównym (zepsute scalanie).

Popełniłeś błąd podczas początkowego wyewidencjonowywania nierekurencyjnego. Możesz spróbować wykonać dobre, pełne zatwierdzenie za pomocą --depth infinityparametru w CLI lub znaleźć ten przełącznik w GUI TortoiseSVN.

svn commit --depth infinity . -m "Merge"

1
„Popełniłeś błąd podczas początkowego wyewidencjonowywania nierekurencyjnego”. Nie, niekoniecznie. Sprawdziłem toaletę w taki sam sposób, jak zawsze, ale nagle nadal mam ten problem. W rzeczywistości wydaje się, że tak nie jest w przypadku żadnego z poniższych alternatywnych rozwiązań.
Keith M

To jest całkowicie fałszywe. Od czasu do czasu dostaję tę wiadomość i rekurencyjnie sprawdzałem swoją kopię roboczą w taki sam sposób, jak zawsze
1800 INFORMACJE

1

Również w przypadku niektórych plików, które dodałem w formacie SVN, wprowadziłem zmiany po dodaniu (jeśli ma to wpływ na naturę).

W moim przypadku to właśnie spowodowało pojawienie się komunikatu, nawet ja odznaczyłem te pliki do zatwierdzenia.

Brzydkie rozwiązanie, które działa bezpiecznie tylko wtedy, gdy dotyczy tylko kilku plików:

  1. Utwórz kopię zmienionych plików
  2. Przywróć zmienione pliki
  3. Podejmij decyzję o połączeniu / ponownej integracji
  4. Skopiuj zmienione pliki z powrotem do pierwotnego miejsca

Przypomnienie dla siebie: ponownie integruj gałąź tylko wtedy, gdy cel (pień) jest czysty.


1

Wygląda na to, że TortoiseSVN przeprowadza pewnego rodzaju sprawdzenie poprawności przed wywołaniem zmiany. Dobrze, ale komunikat o błędzie jest bardzo niejasny.

Kiedy napotkałem ten problem, wróciłem do używania wiersza poleceń svn do zatwierdzenia. Zatwierdzenie nie powiodło się, ponieważ jeden z folderów nie był aktualny. Po zaktualizowaniu tylko tego folderu ponownie uruchomiłem polecenie „svn commit” i zostało to wykonane.

Edycja: PS: Zanim użyjesz tego wypróbuj, upewnij się, że nie masz żadnych plików oznaczonych jako „ignoruj ​​przy zatwierdzaniu”. „Ignoruj ​​przy zatwierdzeniu” jest specyficzne dla żółwia, a zatwierdzanie SVN również wybiera te zmiany.


1

Pomyślałem, że opublikuję to, ponieważ zadziałało dla mnie ...

Powodem tego jest to, że częściowo zmieniłem nazwę jednego z nowych projektów, które stworzyłem iz jakiegoś powodu wszystkie były wyświetlane jako „Brakujące” na ekranie zatwierdzania.

Po usunięciu projektu i folderu (na który SVN zaznaczył) i umieszczeniu go z powrotem jako nowy projekt, nagle wszystkie „Brakujące” zamieniły się w „Dodane”, a zatwierdzenie działało poprawnie bez ostrzeżenia mnie o niczym .

Mam nadzieję że to pomoże!


1

Widziałem ten problem, a przyczyną było kilka dodanych plików, które nie miały dodanego statusu bez wyraźnego powodu. Były „normalne”, mimo że folder nadrzędny był poprawnie wyświetlany jako „dodane”. Cofnąłem te „normalne” zmiany, a następnie ręcznie wprowadziłem je ponownie. To sprawiło, że każdy dodany element pojawiał się dwa razy na liście zatwierdzeń, ale rozwiązał błąd i wszystko wydaje się teraz działać.

Nie miało to nic wspólnego z ignorowaniem przy zatwierdzaniu, jak w innej odpowiedzi, po prostu wyglądało na błąd w TortoiseSVN.


Z tego co wiem, TortoiseSVN nie przenosi plików rekurencyjnie. Przeniesienie folderu zmienia historię folderu, ale nie zawiera plików. Oznacza to, że aby przenieść foldery za pomocą TortoiseSVN, musisz odtworzyć folder w żądanym miejscu, dodać folder, a następnie przenieść zawartość oryginalnego folderu do nowego. Lub po prostu użyj wiersza poleceń.
Bradley Singer

Uważam, że było to połączenie, a nie ruchu. Chyba że są to podobne operacje, nie śledzę.
Chris

0

Problem może polegać na tym, że Twoje informacje o połączeniu są usuwane przez kogoś lub automatycznie, ponieważ informacje zostały przesunięte w górę w drzewie. Jeśli zamierzasz je ponownie scalić, na razie będzie działać. Ale wszyscy inni będą mieli problemy z ich nie połączonymi gałęziami. SVN utraci część kodu i ponownie połączy już przesłany kod.

Dlatego przywrócenie tych plików i zmiana ich ponownie może działać, ale nie należy po prostu zatwierdzać zmian.


0

Po prostu miałem ten sam problem. Zamiast wybierać wszystkie pliki, kliknąłem wersjonowane i wszystko działało dobrze. W moim przypadku opcja wersjonowana wybrała wszystkie pliki, więc teraz wszystko jest w porządku.


-4

Nie znam opcji dla żółwia, ale możesz użyć wiersza poleceń

svn commit --non-recursive [folder]

to powinno działać tak, jak lubisz pracować na greeings


Inne odpowiedzi mówią, że to nie spowoduje popełnienia tego, co naprawdę chcesz popełnić.
Keith M
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.