我需要从git svn中取出一些修订
我们使用svn,我使用git svn来保持理智。有一次,我们的svn服务器决定为某个文件夹返回403。这发生在每个人身上,不仅仅是我 正因为如此,我无法进行git svn再基。我看到这个错误:我需要从git svn中取出一些修订,svn,git,git-svn,Svn,Git,Git Svn,我们使用svn,我使用git svn来保持理智。有一次,我们的svn服务器决定为某个文件夹返回403。这发生在每个人身上,不仅仅是我 正因为如此,我无法进行git svn再基。我看到这个错误: Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9 rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18
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的文件夹中。在我的文件系统上,服务/活动服务文件夹不存在。我相信它正在试图修改文件(这就是svn中的更改),但是由于文件不存在,它就爆炸了
所以我认为,如果我能够删除过去的修订,然后重新获取它们,它可能会起作用。我只是不知道该怎么做。我试着以交互方式重定基址,然后删除一组,但没有成功
那么,有人知道如何取消获取已经获取的版本吗?首先备份.git目录
删除问题分支的
.rev_map.$UUID
文件,位于.git/svn
下面;并倒带代表问题分支的git svn
生成的分支(通常为trunk
)。要回放分支,请运行git pack refs--all
,git log$branch
,在问题提交之前找到提交,然后编辑.git/packed refs,以便分支现在指向较旧的提交。然后运行git svn fetch
。它将从您现有的、重绕的分支重新构建rev映射,然后获取您尚未提交的svn提交,包括问题提交。您现在应该能够正常地重新设置基础和数据提交。现在更好的方法是git svn reset-r
其中rev是您要开始重新蚀刻之前的版本。完成后,只需运行git svn fetch
,它将重建其索引并在rev后重新提取修订。git svn reset-r
()很简单,在大多数情况下都有效,除非提交重新获取是分支的第一次提交。即使在那种情况下也有效
这是@Tobu的一个稍微精致的版本。(区别在于可以使用git update ref
命令编辑ref)
.git
目录.git/svn/refs/remotes/
目录git-update-ref-refs/remotes//
git svn fetch
将在