Git svn clone:如何推迟修订历史记录的提取
我经常遇到这样的情况,我想立即在SVN存储库上工作。但普通的git svn clone [url]
也克隆了整个历史。所以我想加快速度。第一部分是只把最后一个版本提取到你的Git仓库中。我这样做,像这样:Git svn clone:如何推迟修订历史记录的提取
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
(*上的文章中详细信息:。"How to git-svn clone last n revisions from svn"
这样我和运行,可以立即开展工作,但是,如果没有历史的本地副本
现在的问题是,我如何从svn仓库取回历史记录?
而且最好是可以以1000个修订版块(以相反的顺序)完成,任何帮助在这里将不胜感激:)
我发现它是如何完成的。诀窍是不要使用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
这似乎不适用于我,它只是返回时,当我尝试做git svn fetch -r 1000:HEAD – Verhogen 2009-10-25 23:10:56
它也不适用于我,以及Rob Crawford提出的解决方案。对我而言,最初的问题仍然未得到答复。 – sthiers 2012-09-11 12:42:23
@verhogen - 'git svn fetch -r 1000:HEAD'表示“从rev 1000开始获取所有修订直到当前HEAD”。如果你在SVN中有800个修订版,那么这个版本不会获取任何东西。如果你有50k的修订版本,它会取得比你想的更多的方式。 – 2013-12-10 09:15:35
git svn fetch
出现“记得”这是以前看过的修订。我一直有成功有做范围:
git svn fetch -r 0:100
git svn fetch -r 100:200
git svn fetch -r 4500
git svn rebase
git svn fetch -r 200:300
我拿来了最新的修订版,然后“在填充”空白开始。它似乎工作正常。
Jesper - 如果您的存储库没有修订版1000,那么它没有任何提取。确保您使用的版本号是有效的!
不知道这是什么实现。它成功了,但是一个git日志不会告诉你任何东西超过你最初的抓取和转发。 – 2012-12-06 22:20:14
建议的答案都不起作用。修改后的git svn fetch
只会检索比已经克隆的修订版更新的修订版。您可能可以使用git svn reset
返回到较旧版本并从那里检索,但之后必须执行一些肮脏的工作,以将新版本“嫁接”回到完整树(SVN修订版的SHA1 git取决于修订的整个亲子关系)。如果你方便使用手柄git
为您提供,请为它服务。
避免这个问题要容易得多。
- 做一个最后几个修订版的初始克隆,这样你就可以立即开始工作;
- 启动完整历史的另一个克隆到另一个目录/ git仓库;
- 在您的部分历史中尽可能多地工作;
- 完整克隆完成后,使用类似http://www.sanityinc.com/articles/relocating-git-svn-repositories/的方法将工作从部分存储库复制到完整存储库。
所以,这是一个部分的答案 - 你如何获取历史?把它拿到另一个回购中,并复制你需要的东西。它可以以相反的顺序以1000块完成吗?用手术刀和很多耐心,可能,但它不值得。完全取得前进将超过所有第一次修订的开销,这些修改是由每个块git svn fetch
抓取的,修复将变得单调乏味。
我发现下面的解决方案很有用http://*.com/a/2348596/429476 – 2016-01-27 08:12:20