我知道你可以使用git svn init来跟踪一个带有git的svn repo,但是如果你想创建一个全新的repo,那就是这样.
我的情况是,我目前已经有了一个现有的git repo,并希望通过在我当前的git仓库中将其作为远程分支来跟踪svn repo的主干.
有什么建议?
当我必须使用svn时,我使用git-svn与svn对话.我用标准的git svn clone -s行克隆了repo,当时所有的远程分支都在那里.
从那时起,一个新的分支已经创建,但不是我.我想在本地结帐/跟踪这个分支.我可以跟踪一个我能看到的分支(使用git branch -r),如下所示:
git checkout -t -b dev remotes/development
Run Code Online (Sandbox Code Playgroud)
但这不适用于其他分支,因为它没有出现在git branch -r中
如何跟踪这个缺失的分支?
在git 1.7.9.5中,我可以运行以下行而不会出现错误:
export SVNPASS=readonly
git clone git@github.com:dtenenbaum/RGalaxy.test.git
cd RGalaxy.test/
git config --add svn-remote.hedgehog.url https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/RGalaxy
git config --add svn-remote.hedgehog.fetch :refs/remotes/hedgehog
# the following is a shortcut to avoid fetching every commit since antiquity, since I happen to know the commit number
# where this folder was added to svn:
echo $SVNPASS | git svn fetch --username readonly hedgehog -r 65762:HEAD
git checkout -b local-hedgehog -t hedgehog
Run Code Online (Sandbox Code Playgroud)
在git 1.8.3.4和1.8.4.1中,最后一行导致:
fatal: Cannot setup tracking information; starting point 'hedgehog' is not a branch.
Run Code Online (Sandbox Code Playgroud)
对 …
我正在使用git-svn来处理svn repo.我不想要整个回购,正弦它包含很多遗产,其中包含二进制文件.我只跟踪一些目录.
这是我的当前.git/config,这是正常的.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://svn.example.com/repository
fetch = trunk/Python:refs/remotes/trunk
branches = branches/{stage,prod,stage_with_proxy}/ucapi/:refs/remotes/*
branches = branches/{active}/Python/:refs/remotes/*
Run Code Online (Sandbox Code Playgroud)
现在我要添加一个新分支:
branches = branches/{fuze_node}/:refs/remotes/*
Run Code Online (Sandbox Code Playgroud)
但是当git svn fetchgit看不到新的分支时.它就好像该行不在配置中.
我知道这可以用一个新的svn-remote完成,但我宁愿不走那条路.
我正在尝试使用git svn克隆一个svn存储库.存储库具有标记的每日构建,我想忽略它.我试图使用"ignore-paths"选项来做到这一点,但我仍然将每日构建标记作为我的存储库中的分支.
这里有一个非常近期和类似的(但迄今未解答的)问题: 如何git svn只获取具有某些模式的分支/标签?
通用存储库结构
我在正则表达式上并不那么出色,而且它们可能是错的,但这是我尝试过的:
这只是我在git svn文档中找到的修改版本:
git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="^[^/]+/(?:tags/builds|tags/old|branches)" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
这是我试图简化:
git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="(old|builds)" https://test.kuali.org/svn/rice rice-full
Run Code Online (Sandbox Code Playgroud)
绝望......(并添加一些我不需要的路径)
git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^[^/]+/(?:builds|old)|inactive|rice-functional-tests|sandbox|tools" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
然后我切换到更新版本,以便更快完成,并尝试忽略所有分支和标签进行测试.这个似乎没有得到任何分支和标签,但它也从未完成.它似乎冻结了(至少,它的运行时间超过了我认为应该只有一两天的历史):
git svn clone -r21846:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags*|^branches*" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
我试过的最后一个是:
git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags/old*|^tags/builds*|^inactive*|^rice-functional-tests*|^sandbox*|^tools*" https://test.kuali.org/svn/rice
Run Code Online (Sandbox Code Playgroud)
我不确定ignore-paths正则表达式到底匹配什么.它是svn存储库的相对路径(tags/builds/Daily build 1)吗?是评估项目中的每个文件(标记/构建/每日构建1 /文件1,标记/构建/每日构建1 /文件2)还是仅在分支/标记级别(标记/构建/每日构建1)?它是否包含存储库基本URL( …
我在svn上签出我自己的私人分支,如下所示:
git svn clone svn://server/cfe/project/branches/fb_oz_3173_email
Run Code Online (Sandbox Code Playgroud)
现在我在分公司master.
我想要:
fbsvn://server/cfe/project/trunk我做不到.有人可以给我带头吗?
git branch -m fb