如何在存储库上使用 svn2git

2023-12-19

我在用着svn2git https://github.com/nirvdrum/svn2git测试 svn 存储库到 git 的迁移。 现在我的 svn 是这样构建的

myproj包含

repo1 /
repo2 (obsolete)/
old/

每个存储库都包含自己的分支、标签等。 我只需要 repo1 中的所有内容。 当我开始这个过程时,我得到这个:

svn2git https://server/myproj/repo1 --username LVO

output:

Initialized empty Git repository in /folder/.git/
Using higher level of URL: https://server/myproj/repo1 => https://server/myproj

然后这个过程就开始了。恐怕它也会占用所有其他旧的仓库。这是正确的开始方式吗?:

$ svn2git https://server/myproj/repo1 --username xxx --trunk=/repo1 --branches=/repo1 --tags=/repo1 

(尤其是后备箱的事情我不清楚)。当我的存储库位于此树中时,如何启动 svn2git?


对于一次性迁移git-svn is not用于转换存储库或部分存储库的正确工具。如果您想使用 Git 作为现有 SVN 服务器的前端,那么它是一个很棒的工具,但对于一次性转换,您应该not use git-svn, but svn2git这更适合这个用例。

The svn2git您使用的工具基于git-svn因此,它具有大多数相同的缺点,只是在克隆后的操作中修复了一些缺点。

有很多工具称为svn2git,最好的可能是 KDE 中的一个https://github.com/svn-all-fast-export/svn2git https://github.com/svn-all-fast-export/svn2git。我强烈建议使用它svn2git工具。这是我所知道的最好的,并且它的规则文件非常灵活。

您将能够轻松配置svn2gits 规则文件,以从当前 SVN 布局生成您想要的结果,包括任何复杂的历史记录。

如果您对存储库的历史不是 100% 了解,svneverever from http://blog.hartwork.org/?p=763 http://blog.hartwork.org/?p=763是一个很好的工具,可以在将 SVN 存储库迁移到 Git 时调查其历史记录。


虽然git-svn(或者svn2git基于它)更容易上手,这里是使用 KDE 的一些进一步原因svn2git代替git-svn除了灵活性之外,它还具有优越性:

  • 历史被重建得更好、更干净svn2git(如果使用正确的),对于具有分支和合并等的更复杂的历史记录尤其如此
  • 这些标签是真正的标签,而不是 Git 中的分支
  • with git-svn标签包含一个额外的空提交,这也使得它们不是分支的一部分,所以一个正常的fetch除非你给予,否则不会得到它们--tags默认情况下,只有指向所获取分支的标签才会被获取。有了正确的 svn2git 标签,它们就在它们所属的地方
  • 如果您更改了 SVN 中的布局,您可以使用以下命令轻松配置svn2git, with git-svn你最终会失去历史
  • with svn2git您还可以轻松地将一个 SVN 存储库拆分为多个 Git 存储库
  • 或者轻松地将同一 SVN 根目录中的多个 SVN 存储库合并到一个 Git 存储库中
  • 如果正确的话,转换速度会快数亿倍svn2git比与git-svn

你看,原因有很多git-svn更糟糕的是 KDEsvn2git是优越的。 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在存储库上使用 svn2git 的相关文章

  • 如何签出仅在“git ls-remote”中列出的分支?

    我遇到了无法切换到仅列出的分支的情况git ls remote 这是详细信息 我分叉了一个 github repoA 作为 repoB 创建了自己的分支并将其推送到 ComputerA 中的 repoB 在 ComputerB 中 我将分叉
  • $id:文件名、创建日期/时间 Exp $

    我经常在 C C 源代码中遇到以下语句 Id lzio c v 1 24 2003 03 20 16 00 56 roberto Exp Id file name version timestamp creator Exp 您知道哪些软件会
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • 如何让 git 显示作者日期指定日期范围内的提交?

    显然this https stackoverflow com a 11189286 281545 git log all after
  • 使用 GitHub,在添加现有存储库时如何推送所有分支?

    我创建了一个新的 GitHub 存储库 我想将现有的存储库放在那里 我按照说明操作 cd existing git repo git remote add origin email protected cdn cgi l email pro
  • 如何停用 Xcode git 功能? (删除 git 集成)

    我的 Xcode 项目位于 git 上 但我不喜欢 Xcode git 集成 有时 我有来自 Xcode 的错误 https stackoverflow com questions 7388560 error fatal not a git
  • 如何在 SVN 中分支单个文件?

    分支的颠覆概念似乎专注于创建整个存储库的 不稳定 分支 并在其上进行开发 是否有一种机制可以创建单个文件的分支 对于用例 请考虑具有多个特定于平台的源代码 c 实现的通用头文件 h 这种类型的分支是永久性的 所有这些分支都将不断发展 偶尔会
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31
  • Mercurial 和 SVN 并排在同一工作目录中?

    我们的环境目前使用SVN 我想更频繁地提交 但我不想破坏任何主要分支 就我个人而言 我比 SVN 更喜欢 Mercurial 如果我在 SVN 工作副本中初始化一个存储库 如果我只是定期提交到 Mercurial 存储库并将工作修订提交到
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • 是否可以使用“git gc”来打包引用日志对象?

    正如答案所暗示的https stackoverflow com a 32025729 https stackoverflow com a 32025729我已经配置了远程裸仓库 git config gc pruneExpire never
  • 如何升级 Hibernate 4.3 --> 5.2?

    我用 Google 搜索了一下 但没有看到任何将 Hibernate 升级到 5 2 的教程 我唯一能找到的是 http hibernate org search documentation migrate 5 0 http hiberna

随机推荐

  • 如何在 Bootstrap 4 中的插入符下添加下拉箭头?

    我正在使用 Bootstrap 4 下拉选项 我想为左上角的下拉菜单添加一个向上箭头 在 Bootstrap 3 中 我们在按钮上有一个插入标记 因此我们可以将箭头添加到下拉菜单中 但在 Bootstrap 4 中 我们没有插入符号标记 使
  • Rails ORM 是否限制执行聚合的能力?

    我担心 Rails 是否可以处理金融应用程序所需的复杂聚合类型 特别是 ORM 是否可以有效地处理这些类型 在我正在考虑使用它的财务应用程序中 需要对以各种方式汇总的详细财务数据进行大量报告 如果没有 Rails ORM 的支持 我需要直接
  • 使 CSS 网格中的单行跨越所有列

    我怎样才能使 legend 跨越所有行 所以它会弄乱 fieldset 其样式为 3 列 CSS 网格 fieldset legend Personal Details legend fieldset fieldset legend
  • 编译器是否允许交错计算不同函数参数中的子表达式? [复制]

    这个问题在这里已经有答案了 我想知道以下情况 void f int a int b int a int x std cout lt lt func a lt lt std endl return 1 int b int x std cout
  • 如何在 Django 中测试空查询集?

    我正在 Django 中测试一个视图 该视图应该从对象中删除所有标签 为此 我使用这个断言 self assertEqual list Tag objects get for object Animal objects get pk 1 这
  • 根据 Airflow 中任务的输出字典动态生成多个任务

    我有一个任务 其中输出是一个字典 每个键中都有一个列表值 task task id gen dict def generate dict return output dict output look like this A aa bb cc
  • ASP.NET Web API,从 Flex FileReference 上传时 MIME 多部分流意外结束

    按照 ASP NET 上的教程 实现了一个用于执行异步文件上传的 Web API 控制器方法 如下所示 public Task
  • 帮助理解 Java 中的函数对象或函子

    有人可以解释什么是函子并提供一个简单的例子吗 函数对象就是这样 既是对象又是函数的东西 旁白 将函数对象称为 函子 是对该术语的严重滥用 另一种 函子 是数学中的核心概念 并且在计算机科学中具有直接作用 请参阅 Haskell 函子 该术语
  • 在 PHP 中应用差异

    我正在使用 Text Diff PEAR 包来比较短文本文档 其中 Text Diff 对象是使用每个文档中以空格分隔的单词列表创建的 我希望将差异存储在数据库中 然后在再次加载文件时应用它 有没有一种简单的方法来应用这个差异 或者我需要编
  • 应用程序根目录中“npm install”生成的许多不必要的文件

    通常 当我在应用程序目录中执行 npm install 时 会在 node modules 文件夹中生成一堆 npm 库文件 这是预期的 今天突然我开始看到许多文件在应用程序目录内部和节点模块外部生成 有人遇到过这个问题吗 如果是的话 有什
  • C++ int 操作在 mips 架构上是原子的吗

    我想知道我是否可以在不锁定 mips cpu 的情况下读取或写入共享 int 值 尤其是 Amazon 或 Danube 我的意思是 如果这样的读取或写入是原子的 其他线程不能中断它们 需要明确的是 我不想阻止线程之间的竞争 但我关心 in
  • 在 Windows 中的 Windows 移动应用程序中发送邮件

    我是 Windows Mobile 应用程序的新手 在我的项目中 我想使用发送电子邮件microsoft windowsmobile pocketoutlook 到目前为止我有以下代码 private void btnsubmit Clic
  • 为什么 Rust 允许通过空指针调用函数?

    我正在尝试 Rust 中的函数指针魔法 最终得到了一个代码片段 我完全没有解释为什么它会编译 甚至没有解释它为什么运行 fn foo println This is really weird fn caller
  • 如何将文件夹层次结构中的所有 git 内容向上移动一级?

    我有一个 git 存储库 其结构如下 repo git bootstrap py buildout cfg gitignore webapp manage py modules templates static 我想移动内容webapp文件
  • Net Core:从 Autofac 模块访问 appsettings.json 值

    AspNet核心应用程序 1 像这样的Autofac模块 public class AutofacModule Module protected override void Load ContainerBuilder builder Reg
  • 在 PHP PCRE 函数中双重转义还是不双重转义?

    我一直在寻找一篇关于何时需要双重转义 何时不需要双重转义的可靠文章 但我找不到任何东西 也许我看起来不够仔细 因为我确信在某个地方有一个解释 但让下一个有这个问题的人很容易找到 以以下正则表达式模式为例 n domain com myfee
  • 封闭式班级

    是否可以创建一个不再接纳新成员的类型类 也许通过使用模块边界 我可以拒绝导出完整实例定义所需的函数 但这只会在有人生成无效实例时导致运行时错误 我可以将其设置为编译时错误吗 自 GHC 7 8 1 起 封闭型家庭 https downloa
  • 单击超链接时停止模糊事件

    我用了这个答案jQuery 模拟输入和 div https stackoverflow com questions 11228628 jquery select simulation with input and div创建一个看起来相似的
  • 拖放背后的逻辑

    我想知道基本拖放功能的 它是如何工作的 和 它应该如何设计和实现 方面 我还没有实现过这样的功能 我正计划为我的一个项目这样做 并且我确实对如何实施它有一些想法 我想确保我走在正确的道路上 并且你们很可能也对此事有话要说 假设我有如下列出的
  • 如何在存储库上使用 svn2git

    我在用着svn2git https github com nirvdrum svn2git测试 svn 存储库到 git 的迁移 现在我的 svn 是这样构建的 myproj包含 repo1 repo2 obsolete old 每个存储库