Większość poprzednich odpowiedzi używa odwrotnego scalania, co zwykle jest właściwą odpowiedzią. Jest jednak jedna sytuacja (która właśnie mi się przytrafiła), w której nie jest.
Przypadkowo zmieniono plik z końcówkami linii Unix na zakończenia linii DOS po wprowadzeniu drobnej zmiany i zatwierdziłem ją. Można to łatwo cofnąć, zmieniając zakończenia linii i ponownie zatwierdzając lub odwrotnie, ale powoduje to, że svn blame
wyświetla moją edycję jako źródło każdej linii pliku. (. Co ciekawe, TortoiseSVN na Windows nie uzyskać wpływ na to, tylko z wiersza poleceń svn blame
)
Jeśli chcesz zachować historię jak donosi svn blame
, myślę, że trzeba wykonać następujące czynności:
- Usuń plik i zatwierdz.
- W repozytorium skopiuj poprzednią dobrą kopię pliku do głowy i zatwierdz.
- Przywróć wszelkie zmiany, które chcesz zachować.
Usunięcie jest trochę przerażające, ale pamiętaj, że zawsze masz plik zapisany w repozytorium, więc przywrócenie go nie jest wielkim problemem. Oto trochę kodu ilustrującego kroki. Załóżmy, że xxx
jest numerem wersji ostatniej dobrej kopii.
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/[email protected] svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
Należy pamiętać, że w przypadku kopii w repozytorium miejscem docelowym musi być katalog, a nie nazwa pliku.
ale scalenie nie zastąpi moich zmian i nowej wersji. –
Jakie zmiany? Wszelkie zmiany, których nie chcesz w swojej kopii roboczej, można po prostu usunąć przy pomocy polecenia svn revert. Zatwierdzone zmiany zostaną "cofnięte" przez to scalenie. –
Jeśli używasz TortoiseSVN, kliknij plik prawym przyciskiem myszy wybierz Scal, a następnie Scal zakres wersji. W polu dziennika wpisz 140-150 i kliknij pole wyboru Odwróć. Następnie zatwierdz jak zwykle. Spowoduje to wykonanie tej samej operacji, co przykład Jona. – DavGarcia