问题标签 [subgit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1915 浏览

git - 使用 SubGit 跨存储库重组将 svn 转换为 git

我正在使用 SubGit 2.0.3 将 Subversion 存储库迁移到 Git,同时尝试在重组过程中保持完整的历史记录。我有一个配置,它似乎在分支的重组中保持历史,但不是主干。

重组本身有点……不寻常……并且涉及中间布局。

初始布局:

  • 主干:/ProjectOldName
  • 分支:/ProjectOldName/Releases
  • 标签: 不适用

中间布局:

  • 主干:/主干/ProjectNewName
  • 分支:/releases/ProjectNewName
  • 标签: 不适用

最终布局:

  • 主干:/ProjectNewName/主干
  • 分支:/ProjectNewName/branches/releases
  • 标签:/ProjectNewName/标签

所以我用于转换的 subgit 映射是:

这维护了发布分支的历史记录,文件的日志将超越重组......尽管它似乎在创建分支时停止(发生在重组之前)。然而,master 上同一文件的历史记录在创建重组的最后一步时停止,并且 git 存储库中不存在预期的“old-master-interim”和“old-master”分支。

看起来重组是使用 svn 副本完成的(即他们没有手动复制文件并重新提交它们)并且最终布局的历史记录被正确保留。中间布局创建了两次,第一次尝试被删除,并带有一条注释,表明历史没有被保留。因此,据我所知,重组提交链去了(对于主干):

  • 从 /ProjectOldName 开始
  • 添加目录 /trunk/ProjectNewName
  • 从 /ProjectOldName/ 向 /trunk/ProjectNewName/ 添加多个目录(大部分,但不是全部),但未添加这些目录的删除(我不确定这是如何发生的,因为该分支中尚不存在目录)
  • 从 /ProjectOldName/ 替换 /trunk/ProejctNewName/ 中的多个目录(与上面添加的相同)(修订版略有不同,也许是尝试重做以前的添加?)
  • 删除目录 /trunk/ProjectNewName(带有关于未保存历史记录的注释)
  • 添加目录/trunk/ProjectNewName(第二次)
  • 从 /ProjectOldName/ 向 /trunk/ProjectNewName/ 添加多个目录,再次使用同一组目录,但这次删除不存在
  • 添加目录/ProjectNewName/trunk
  • 从 /trunk/ProjectNewName/ 向 /ProjectNewName/trunk/ 添加多个目录
  • 删除目录 /trunk/ProjectNewName

类似,但对于发布分支略有不同:

  • 从 /ProjectOldName/Releases 开始
  • 添加目录 /releases
  • 从 /ProjectOldName/Releases/ 向 /releases/ 添加多个目录(每个分支一个)
  • 删除目录 /releases
  • 添加目录 /releases/ProjectNewName
  • 从 /ProjectOldName/Releases/ 向 /releases/ProjectNewName/ 添加多个目录(每个分支一个)
  • 添加目录 /ProjectNewName/branches/releases
  • 从 /releases/ProjectNewName/ 向 /ProjectNewName/branches/releases/ 添加多个目录(每个分支一个)
  • 删除目录 /releases/ProjectNewName

唯一真正的区别似乎是主干而不是分支发生的“替换多个目录”步骤。

所以毕竟:

  • 有没有办法让 SubGit 转换上述内容,同时保持主干重组的历史记录?
  • SubGit 能否像在原始存储库布局中那样处理主干下的分支(即 /OldProjectName 的主干,/OldProjectName/Releases 的分支)?
  • “主干”映射有什么特别之处吗?或者它实际上与“分支”映射没有什么不同?svn 和 git 的 AFAIK 分别对 'trunk' 目录和 'master' 分支没有什么特别之处。
  • 尽管分支上的历史似乎跨越了重组 OK,但它们在分支创建处停止,而不是继续到分支所在的位置。什么会导致这种情况以及如何解决(如果可以的话)?
0 投票
1 回答
113 浏览

git - 在 subgit 中正确映射分支/用户/*

我正在评估 SubGit,看起来它导入得相当好,除了我们在 SVN 目录中有标准和非标准分支:

有像branches/testand这样的标准分支branches/JIRA_89,但我们也有一些分支branches/user/jimand branches/user/bob

为 subgit 导入重命名这些用户分支的正确方法是什么?

0 投票
1 回答
1067 浏览

git - 将 subgit 与具有 .git 目录的存储库一起使用

如果我希望我的 Git 存储库有一个 .git 子目录,我很困惑如何使用 subgit。

如果我使用常规的subgit configure+ (subgit importsubgit install),它不会创建.git目录。

如果我先做git init,那么我可以做,subgit import但它似乎不会让我先做subgit configure,我想设置我的配置文件,这样我就不必在命令行中放置一堆东西subgit import

有没有办法告诉所有存储库的东西subgit使用常规目录?.git

0 投票
0 回答
486 浏览

git - 使用 SubGit 将远程 SVN 存储库镜像到远程 GIT 存储库

我们正处于从 SVN 迁移到 Git 的过程中,我们希望同时使用两者,这就是我们需要相互同步的原因。SVN 上的更改应该反映在 GIT 上,反之亦然。

但是,我遇到了一些麻烦:我可以访问以下 SVN 存储库: https ://svn.domain1.com/test_repo 和以下 Git 存储库:https ://gitlab.domain2.com/test/测试.git

有没有人想出一种方法可以在第三台服务器上安装 SubGit,并自动镜像两个 SVN/GIT 远程存储库?

从我所见,我只能将远程 SVN 镜像到本地存储库,而不是像我需要的远程存储库:

像这样的命令会很有用,不幸的是“--git-url”不是一个有效的参数。

在这种情况下,有人找到可行的解决方案吗?

0 投票
0 回答
173 浏览

git - Subgit 和 svn 提交消息钩子

我们使用 subgit 来同步 git 和 svn,并且有一个 svn 钩子用于检查提交消息格式。

我们发现在不违反 svn 钩子的情况下,我们可以执行哪些 git 操作是有限的。例如:

git commit -m 'XYZ: abc' git 推送。工作正常。

git tag -a 1.0.0 -m 'XYZ:abc' git push 1.0.0 svn 钩子会失败,因为 subgit 在同步到 svn 时没有附加消息。

等等。

除了使用 git --alow-empty 伪造消息或在 svn 中执行操作并等待同步之外,是否有解决方案?

问候。

0 投票
1 回答
994 浏览

git - 使用 subgit 镜像进行单向同步

我已经设置 subgit 将一个汇编 svn 存储库镜像到 git。我只想使用 svn->git 方式。无论如何,我无权提交 svn repo,因此 subgit 在尝试同步回 svn (git->svn) 时会出现错误消息。有没有办法做到这一点?

0 投票
1 回答
447 浏览

git - 如何在带有 oa 主干的 GIT 中镜像 SVN

我们正在使用Stash (3.8.0) 和SVN Mirror for Atlassian Stash (2.0.15) 插件,两者都获得了 50 多个席位的许可。但是,我们正在尝试将 SVN 镜像到 Stash 中的空存储库。以下使我们无法前进。

我们的 SVN 链接是svn://svn.hostname.com/. 代码位于 中/,而不是分支、主干或标签中。我们不使用任何这些。当 Stash 完成导入时,我们在 Stash 中没有错误。

状态页面显示以下内容,但存储库保持为空。

颠覆镜

有人知道这是一个可能的错误还是只是配置错误?

0 投票
1 回答
182 浏览

git - 在 Stash SVN Mirror 中导出作者映射

我正在构建一个 Stash 服务器来将我们的 SVN 项目迁移到 Git。

目前我正在尝试试用 Stash 和 SVN Mirror 插件来导入我们的一些项目。

要点如下:虽然 LDAP 映射正常工作并且提交始终与用户一致,但一些离开公司的人不再在我们的 LDAP 中注册,所以为了完整起见,我决定手动输入他们的旧电子邮件。当我准备导入项目时出现的 Git Author 映射屏幕。

由于它是重复的工作,我想导出一个作者映射文件,以便在插件的全局配置屏幕中导入缺失的条目。

问题是:

您知道如何从通过 SVN 导入在 Stash 中创建的现有 Git 存储库或向导本身期间导出 SVN<->Git 作者文件吗?这可能非常有用

0 投票
0 回答
974 浏览

git - 使用 SubGit 将 SVN 导入 git - git repo 没有分支?

我安装了 Subgit,因为我们的团队想要将现有的 SVN 存储库切换到 git。据我所知,该结构非常标准:

http://svn.local/project1/trunk<trunk

http://svn.local/project1/branches<branches

http://svn.local/project1/tags<tags

我的问题是导入的 git repo 不包含分支。这是我进行导入的方式:

CD-d 到 ~/git 并运行subgit configure --svn-url http://svn.local/project1/trunk project1.
该命令的结果是:


我做了第 2 步 - 为 SVN 服务器添加了有效凭据。如果重要的话,它是启用 LDAP 的,但是凭据经过验证并且绝对有效。然后我运行subgit install project1
输出:

所以我可以看到它从 SVN 存储库中提取了一些历史记录。但是,在文件夹git branch -a内执行project1不会返回任何内容。git fetch说我必须指定一个远程存储库,但我不确定我必须放在那里。我该如何解决这个问题,所以我终于可以让其他人从project1repo 中克隆并查看代码和历史记录?

0 投票
1 回答
228 浏览

git - 如何使用 SubGit 在同步的 SVN 存储库中找到 Git 修订哈希?

在从 SVN 迁移到 git 的过程中,我们正在评估 Stash 中的SVN Mirror Stash 插件( SubGit )。

我们的要求之一是 git 修订哈希在 SVN 存储库中可用,可以在自定义 revprop 中,也可以通过 JSON 格式的日志消息。

本质上,我正在尝试与此问题中描述的相反。

我同时控制 git repo 和 svn repo,我很高兴编写自定义钩子/脚本,但我无法在 subgit 或 stash 文档中找到插入此钩子的合适位置。我也对插入此类功能的最佳实践非常感兴趣。