- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在测试 SubGit 作为从 SVN 迁移到 Git 的一种方式。
我想做的是能够在 git 存储库中创建所有用户都可以使用的远程分支,不会同步回 SVN。
我只希望 SubGit 跟踪 master 分支并将其同步回 SVN,以便我们可以自由使用和共享其他 Git 分支。
有没有简单的方法可以做到这一点?
谢谢
最佳答案
理想的解决方案是在 SubGit configuration 中指定 trunk:refs/heads/master 映射, 因此 SubGit 将同步 trunk 与 master 忽略任何其他分支。
不幸的是,SubGit 目前至少需要一个分支映射(版本 1.0.x 和 2.0.x)。也就是说,必须指定如下内容:
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/*
由于您不打算同步所有 Git 分支,请考虑使用一些特殊的命名空间来解决此问题:
trunk = trunk:refs/heads/master
branches = branches/*:refs/gitsvn/heads/*
...
因此,如果将 master 分支推送到中央 Git 存储库,它会被转换为 trunk。但是,如果推送分支 foo,SubGit 会忽略该分支,因为 refs/heads/foo 不在同步范围内。
麻烦来自 merge 提交:如果提交 A 是 merge 分支 foo 到 master 的结果,那么 SubGit 会创建 branches/foo在提交 A 的相应父级的 Subversion 端。如果您不希望将 SubGit 生成的分支包含到 *branches/** 命名空间中,请考虑在 Subversion 端也使用一些特殊分支:
trunk = trunk:refs/heads/master
branches = gitsvn/branches/*:refs/gitsvn/heads/*
shelves = shelves/*:refs/shelves/*
tags = gitsvn/tags/*:refs/gitsvn/tags/*
在这种情况下,应将提交 A 的同一父级发送到 gitsvn/branches/foo 分支。
这是目前可用的最佳解决方案。我们还有 2.1 版的功能请求,可以为您提供理想的解决方案,但我们需要一些时间才能实现它。
SubGit 3.0 更新:
从 3.0.0 版本开始(目前处于早期访问阶段,下载地址 http://subgit.com/eap )SubGit 支持单分支布局,因此配置文件可能如下所示:
没有主干,没有分支,没有标签,没有架子:
[svn]
url = http://host.com/repos/project
在这种情况下,project 目录直接映射到 Git 存储库中的 master 分支; SubGit 忽略任何其他分支并且从不创建架子,这意味着匿名 Git 分支不会同步到 SVN。
单行李箱,无货架:
[svn]
url = http://host.com/repos/project
trunk = trunk:refs/heads/master
在这种情况下,project/trunk 目录映射到 Git 存储库中的 master 分支; SubGit 忽略任何其他分支并且从不创建书架。
带搁板的单行李箱:
[svn]
url = http://host.com/repos/project
trunk = trunk:refs/heads/master
shelves = shelves/*:refs/shelves/*
在这种情况下,project/trunk 目录映射到 Git 存储库中的 master 分支; SubGit 忽略任何其他分支,但它会将匿名分支转换为搁置,默认情况下是版本 1.0.x 和 2.0.x。
希望对您有所帮助。
关于git - SubGit:如何排除分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588228/
我正在尝试使用 subgit 迁移源代码,它说导入成功但是,当我打开目录时,我只看到带有一些元数据和历史文件的 git 和 subgit 文件夹,但没有实际的源代码,我的分支目录也是空。 Peg lo
我正在尝试使用 subgit 迁移源代码,它说导入成功但是,当我打开目录时,我只看到带有一些元数据和历史文件的 git 和 subgit 文件夹,但没有实际的源代码,我的分支目录也是空。 Peg lo
subgit 是否支持多个“分支”目录? 例如,如果有一个 SVN 存储库,如下所示: trunk/... branches//... releases//... tags//... 但“发布”实际上
作为Windows用户,我们创建了一个带有文件夹层次结构的svn存储库。底部节点包含svn标准布局: ProjectA/ ApplicationOne/ ModuleX/
我正在尝试使用 subgit 工具将我们的 subversion 存储库转换为 git。我成功地建立了对 git 存储库的颠覆,并且它已经正常工作了一段时间,但是在我通过工作站重新启动后,颠覆的变化停
我正在测试 SubGit 作为从 SVN 迁移到 Git 的一种方式。 我想做的是能够在 git 存储库中创建所有用户都可以使用的远程分支,不会同步回 SVN。 我只希望 SubGit 跟踪 mast
在运行 SubGit 时,我发现默认的堆大小不可调整,因为我基本上是在运行: subgit install foo.git 使用其中包含的设置。 使用 jmap -heap {pid} 检查最大堆大小
我正在使用 SubGit克隆 SVN 存储库。修订的某处是某个标签的“/”副本。 SubGit加载每一个修订时,需要很长时间才能得到这个特定的标签,而这个标签恰好是“/”的副本。这样可以防止复制。 我
我正在尝试使用 SubGit但是我面临着分支的问题:我希望在 Git 下创建的分支只在 Git 中生死存亡。我发现了这个:SubGit: How to exclude branches? , 但它说
我才刚刚开始使用 SubGit并想使用 Gitlab结合起来。 我将如何使用 SubGit 提供的 Git 存储库? 最佳答案 按照这些说明将 SubGit 用于 GitLab 管理的存储库: 在 G
我想用 subgit 查看 glassfish svn 2.0.2。 我添加了 ssh-rsa blabla user@host 在 java.net 的用户帐户设置中。 key 本地存储在 ~/.s
我一直在使用 subgit 将我的 subversion 存储库转换为 git。不幸的是,我的一个分支中有一个子项目不是标准布局。非标准子项目不计入转换。 子项目的内容是 /my-subproject
因此,使用带有最新 BitBucket (4.8.3) 的 Subversion 镜像 (SubGit)。 master 有两个变化。一种是直接制作的,另一种是通过功能分支的 merge 制作的。推送
我正在使用 SubGit同步 Git 和 SVN 仓库。克隆远程 Git 存储库时,我想保留该存储库的所有历史记录。我目前遵循的步骤只允许我复制 master 分支的历史: svnadmin crea
我正在使用 Subgit 访问 Subversion 存储库。它工作得很好,但有时,尤其是在与使用普通 Subversion 客户端访问存储库的用户交流时,我真的很想找到特定变更集对应的 SVN 修订
我正在使用简单的准时导入将现有的 SVN 存储库迁移到 GIT。 $ subgit import --svn-url http://svn/repo repo.git 一切正常,但是否有机会在 Sub
我是一名优秀的程序员,十分优秀!