Jes*_*sen 31 git clone git-svn git-clone
我经常遇到我想立即在SVN存储库上工作的情况.但普通人git svn clone [url]
也克隆了整个历史.所以我想加快速度.第一部分是仅将最后一个修订版本提取到您的Git存储库中.我是这样做的:
URL=http://google-web-toolkit.googlecode.com/svn/trunk/
REV=`svn info $URL |grep Revision: | awk '{print $2}'`
PROJECT_FOLDER=google-web-toolkit-readonly
git svn clone -r$REV:HEAD $URL $PROJECT_FOLDER
Run Code Online (Sandbox Code Playgroud)
(StackOverflow文章中的更多信息:"如何从svn中git-svn克隆最后修订版本"
这样我就可以立即运行了.但没有历史的本地副本.
问题是,我如何从svn存储库中获取历史记录?
并且优选地,这可以在块中进行,例如1000次修改(以相反的顺序).这里的任何帮助将不胜感激:)
Jes*_*sen 22
我发现它是如何完成的.诀窍是不使用git svn clone
.相反,使用git svn init
和git svn fetch
单独.修改了示例:
URL=http://google-web-toolkit.googlecode.com/svn/trunk/
REV=`svn info $URL |grep Revision: | awk '{print $2}'`
PROJECT_FOLDER=google-web-toolkit-readonly
mkdir $PROJECT_FOLDER
cd !$ #goes into dir named $PROJECT_FOLDER
git svn init -s $URL #-s implies --stdlayout with /trunk /tags /branches
git svn fetch -r $REV
# hack, hack, hack
# or update history (fetch 50 revisions back each loop
for (( r=$REV; r>0; r-=50 ));
do
git svn fetch -r $r:HEAD
done
Run Code Online (Sandbox Code Playgroud)
所有建议的答案都不起作用.git svn fetch
使用修订版只会检索比已经克隆的版本更新的版本.您可以使用git svn reset
回到较旧的版本并从那里检索,但之后您必须做一些肮脏的工作,将您的新修订版"移植"回完整的树(git中SVN修订版的SHA1)取决于修订的整个父母身份).如果您对手术刀git
提供方便,请继续使用.
避免这个问题要容易得多.
那么,这是一个部分答案 - 你怎么能在以后获取历史?将其提取到另一个仓库并复制您需要的内容.它可以以相反的顺序以1000块的形式完成吗?有了手术刀和很多耐心,它可以,但它不太值得.正在运行的完整提取将超过每个块所占用的所有首次修订的开销,并且修复git svn fetch
将变得乏味.