Мне нужно извлечь некоторые ревизии из git-svn - PullRequest
6 голосов
/ 21 января 2010

Мы используем SVN, а я использую GIT-SVN для поддержания здравомыслия. В какой-то момент наш сервер SVN решил вернуть 403 для определенной папки. Это случилось со всеми, не только со мной.

Из-за этого я не могу выполнить git-svn rebase. Я вижу эту ошибку:

Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9
rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18
    M   test/system-tests/src/test/java/com/garmin/elevation/ElevationManagerSystemTest.java
    M   test/activity-test/src/test/java/com/garmin/elevation/ElevationManagerIntegrationTest.java
    M   test/activity-test/src/test/java/com/garmin/mb/activity/service/ActivityServiceManagerIntegrationTest.java
    M   system/deployment/src/main/resources/oracle/releases/2.9-SNAPSHOT/110-preference/4-data.dml.sql
    M   pom.xml
service/activity-service-1.2/src/main/java/com/garmin/activity/service/impl/ActivityServiceImpl.java was not found in commit 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 (r8845)

Файл, на который он жалуется в конце, находится в папке, которая возвращала 403, когда у нас была ошибка. В моей файловой системе папка service / Activity-service не существует. Я полагаю, что он пытается изменить файл (так выглядит изменение в svn), но поскольку файл не существует, он просто взрывается.

Так что я думаю, что если я смогу удалить прошлые ревизии, а затем заново их получить, это может сработать. Я просто не уверен, как это сделать. Я попытался перебазировать в интерактивном режиме, а затем удалить группу, но это не сработало.

Итак, кто-нибудь знает, как извлечь уже загруженные версии?

Ответы [ 2 ]

10 голосов
/ 03 мая 2012

Лучший способ сделать это сейчас - git svn reset -r <rev>, где rev - это ревизия до , где вы хотите начать повторное получение. После того, как это сделано, просто запустите git svn fetch, и он восстановит свой индекс и повторно получит ревизии после rev .

8 голосов
/ 21 января 2010

Сначала сделайте резервную копию вашего каталога .git.

Удалите файл .rev_map.$UUID для проблемной ветви, ниже .git/svn; и перемотайте созданную git-svn ветвь, которая представляет проблемную ветвь (обычно trunk). Чтобы перемотать ветку, запустите git pack-refs --all, git log $BRANCH, найдите фиксацию перед фиксацией проблемы и отредактируйте .git / pack-refs так, чтобы ветка теперь указывала на более раннюю фиксацию. Затем запустите git svn fetch. Он восстановит карту rev из вашей существующей ветки с перемоткой, а затем извлечет коммиты svn, которых у вас еще нет, включая коммит проблемы. Теперь вы должны быть в состоянии перебазировать и dcommit нормально.

...