Kiedy łączę rzeczy w moim repozytorium, Subversion chce wiele dodać / zmienić svn:mergeinfo
właściwości do plików, które są całkowicie niezwiązane z rzeczami, które chcę scalić.
Pytania dotyczące tego zachowania zostały zadane wcześniej w witrynie Stack Overflow:
- SVN Właściwości scalania informacji na ścieżkach innych niż katalog główny kopii roboczej
- Czy istnieje sposób, aby wyłączyć TortoiseSVN za pomocą svn: mergeinfo?
Z tego, co rozumiem z tematów wymienionych powyżej, wygląda na to, że wiele plików w moim repozytorium ma określone svn:mergeinfo
właściwości, podczas gdy nie powinny. Zaleca się zmniejszenie ilości i umieszczanie tych właściwości tylko w odpowiednich plikach / folderach.
A teraz moje pytanie: w jaki sposób mogę łatwo usunąć te niepotrzebne właściwości? Używam TortoiseSVN, ale nie chcę ręcznie sprawdzać / naprawiać setek plików. Czy istnieje łatwiejszy sposób na usunięcie tych niepotrzebnych svn:mergeinfo
właściwości?
PS Ja nie szukam C ++ SVN kodu API.
źródło
Oto sposób na usunięcie wszystkich właściwości poddrzewa svn: mergeinfo. Uruchom go w katalogu głównym repozytorium:
Wszystko w jednej linii dla łatwego kopiowania / wklejania:
Aby zobaczyć, które pliki to zadziała, przed jego uruchomieniem, zmień ostatni „propdel” na „propget” lub całkowicie usuń ostatni potok xargs.
źródło
Jak wspomniano w tym wątku :
źródło
Ponieważ nie jestem pewny ślepych
svn:merge-info
usuwania właściwości, zaimplementowałem narzędzie do analizy bieżącej sytuacji na kopii roboczej i usunięcia jak największej liczby wersji scalania z właściwości informacji o scalaniu innych niż root. Po dodatkowych sprawdzeniach i kontrolach przez człowieka zmiany w kopii roboczej mogą zostać zatwierdzone.Oto ona: svn-clean-mergeinfo
Nie wahaj się zgłaszać żadnych problemów dotyczących jego użytkowania, aby go ulepszyć.
Subversion 1.10 wprowadza nowe narzędzie dedykowane temu zadaniu:
svn-mergeinfo-normalizer
źródło
Wiem, że minęło trochę czasu, ale napotkałem podobny problem. Używam TortoiseSVN 1.6.7. Tak się złożyło, że właściwość znajdowała się w katalogu głównym mojej kopii roboczej. Kiedy przeglądałem właściwości w katalogu głównym i kliknąłem Usuń na svn: mergeinfo, zapytał mnie, czy chcę usunąć go rekurencyjnie. Pozbyło się to wszystkich moich błędów svn: mergeinfo.
źródło
Jeśli jesteś pewien, że chcesz masowo usunąć właściwości informacji o scalaniu, możesz użyć następującego skryptu BASH.
Pobiera listę zmienionych plików, filtruje ją, aby po prostu scalać informacje tylko o zmianach, usuwa wszystko oprócz rzeczywistej ścieżki pliku, konwertuje ścieżki jeden w wierszu na listę rozdzielaną spacjami, a wywołania wracają na tę listę.
źródło
--xml
flagi i parsera XML; wszystko inne może się zmienić między wersjami, ponieważ zgodność w przód tekstowego formatu wyjściowego nie jest gwarantowana.Zamiast po prostu usuwać na ślepo właściwości informacji o scalaniu, możliwe jest również dokończenie „brakujących” scaleń.
Skopiuj właściwość mergeinfo z folderu głównego, a następnie wykonaj scalanie w folderze podrzędnym dla odpowiedniej ścieżki względnej i dokładnie tej samej listy wersji. (Możesz, ale nie musisz, wymieniać tylko różnice między tą listą a listą już w folderze podrzędnym.)
Zwykle to scalanie powinno kończyć się tylko zmianą właściwości informacji o scaleniu, a nie rzeczywistych plików. (Jeśli w końcu zmieni się pliki, to jedno z poprzednich scaleń musiało być tylko częściowym scaleniem, które i tak mogło powodować problemy).
Powinno to skończyć się usunięciem właściwości mergeinfo, po uzyskaniu ich dokładnego dopasowania. Konieczne może być również wykonanie odwrotnej czynności: scal w katalogu głównym wszelkie wersje scalające obecne tylko w folderze podrzędnym (ponownie możesz po prostu wkleić pełną listę i pozwolić SVN znaleźć dla Ciebie różnice).
źródło
Aby dokonać zmian w strukturze katalogów, wyglądałoby to następująco (tylko funkcja wyszukiwania w systemie innym niż DOS):
Uruchamiam klienta 1.6.12 podłączonego do serwera 1.5, mam podobny problem; nie jest to podkatalog w projekcie, który potrzebuje własnego svn: mergeinfo, ale o 121 takich wpisów (w tym 5 katalogów poniżej ./var z „svn: ignore *”) wydaje się nieco niestosowne. Dlatego byłoby miło mieć skrypt (np. W Pythonie), który jest w stanie usunąć oczywiście zbędne informacje o scalaniu i powiedzieć o innych różnicach ...
źródło