我有一些项目,我从SVN迁移到Git。
但是,当我浏览文件夹结构时,我仍然会在每个项目中看到trunk文件夹。有没有办法快速自动删除?
这是我的svn文件夹结构,请注意,存储库本身没有trunk,但项目有:
--MyRepository
--Project1
--trunk
-- files
--Project2
--trunk
-- files
--Project3
--trunk
-- files
--Project4
--trunk
-- files
--Project5
--trunk
-- files
-- ..
这就是我想要的Git存储库:
--MyRepository
--Project1
-- files
--Project2
-- files
-- ..
提前致谢。
PS:我以为我可以分享用于迁移的命令。在那里:
mkdir gitRepo && cd gitRepo
git svn init http://bla/svn/myRepo --no-metadata
git config svn.authorsfile ../authors.txt
git svn fetch
答案 0 :(得分:1)
如果您正确迁移,则它应该不是trunk
文件夹。请参阅--stdlayout
的{{1}}。所以,你有三个选择:
git svn
或类似的东西重新刻录git历史记录(应该比第一个快,并且不需要原始的svn
repos,但会影响git repo用户(如果有的话)。如何正确迁移回购。据我所知,你有一个像这样的svn repo结构:
filter-branch
因此,您应该进行两次迁移,为每个项目创建两个git存储库:
/
/projectA
/projectA/trunk
/projectA/branches/...
/projectB
/projectB/trunk
/projectB/branches/...
事情是 - svn对主干和分支没有任何想法,所有它理解的是一个文件夹。当你迁移到git时,你应该知道你的svn repo结构,并相应地将文件夹映射到分支。
答案 1 :(得分:1)
所以,就在这里。
执行魔术的命令是:
git filter-branch -f --index-filter \
'git ls-files -s | sed "s-/trunk/-/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' af117ec86a30ba6676571cd1f73083c5cfbec0bd..HEAD
请注意..HEAD
之前的提交标记,该标记应该是您应输入的第二个或第三个最早的提交标记。如果输入第一个,则会出错。
要找出最早提交的提交标记,只需使用:
git log
并尽可能向下滚动,在那里你会看到最早的提交。拿第二或第三。它已经完成了。
答案 2 :(得分:-1)
不,您应该首先根据需要构建文件夹根目录,然后映射根目录。一种正确的做法。