问题标签 [version-control-migration]
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.
git - 将 hg 分支转换为 git 分支?
我必须将一个分支的 mercurial 存储库转换为一个 git 存储库,并在一段时间内继续将更改从 mercurial 拉到 git(仅单向)。现有的 hg-to-git 答案似乎无法正确处理分支。例如,一个带有 'default' 和 'br1' 分支的小型 hg repo 会导致:
Git 认为只有一个分支'master'。 如何让我的 mercurial 分支显示为同名的 git 分支? 我可以使用“master”而不是“default”,但我必须在 git 中拥有所有其他命名的分支。
git - 用目标文件内容替换符号链接
我有一个 svn 树,我想把它变成多个独立的 git 存储库。这种迁移的一个方面是,作为 subversion 树中的跨模块符号链接的 inode 应该被 git 存储库中的实际文件内容替换。因此,如果在某些时候,A/foo
是 的符号链接B/foo
,那么相应的 git commit 应该有一个普通文件A/foo
,其内容是B/foo
. 如果后来的 svn commit 改变了 的内容B/foo
,那么 git 模块A
应该有一个匹配的提交来反映这个变化。
我可以为此使用哪些工具?
现在,这是我能想到的最好的计划:
- 将整个svn克隆到git中
fast-export
那- 使用一些自定义编写的一次性代码对输出进行按摩,以将符号链接转换为内容文件
fast-import
结果进入一个新的单一 git 存储库- 从中创建子模块
但也许您可以提出更简单的解决方案,使用现有代码、现有功能、现有工具,或者使用我没有想到的快捷方式。
也许甚至有一种方法可以在颠覆方面处理更多这些步骤。由于我大量使用创建文件的颠覆副本,并且由于该概念只能在 git 概念中表达得很差,因此我担心上述方法可能会由于复制文件而丢失版本历史。
git - 从具有多个分支及其历史的 TFS 迁移到 GIT
C:\>git tf clone https://companyname.visualstudio.com/DefaultCollection $/companyname/Main OldTFS --deep
这只会让我得到主要的分支历史。那是git tf
。
C:\>git tfs clone https://companyname.visualstudio.com/DefaultCollection $/companyname/Main --with-branches
在其中一个合并变更集中获取几个分支后,这失败了Please report this case to the git-tfs developpers! (report here : https://github.com/git-tfs/git-tfs/issues/461 )
。git branch
给我这个
我已经分支到 Sprint085 和相当多的发布分支。那是git tfs
有什么办法可以git tf
让我获取一些其他正确创建合并提交的分支,以便我可以正确查看历史记录?
git - 如何在 Git 中重命名远程分支以便拥有正确的历史树
我知道这可能看起来像其他类似问题的重复,但它略有不同。
我的情况:
我们已经在 master 分支上开发了一段时间,现在我们想应用这个分支模型: 一个成功的 Git 分支模型
所以我们要实现的是将远程master重命名为develop。
我的步骤:
git 分支 -m 主开发
git push origin 开发
git push origin :master //移除旧的远程master
此时,我从本地创建了一个新的master分支, 并远程推送: git push origin master
开始使用分支模型:
我在开发分支上创建了几个提交。现在我想发布一个版本 1。
我要掌握。git merge --no-ff develop git push origin master
我的问题:
我希望在开发分支上看到旧 master 的提交历史,但我仍然在master分支上看到初始提交:
同时,当我切换到开发分支并查看日志时,我可以看到开发分支上的初始提交。
问题:
是否有可能实现我想要的以及如何实现?
svn - 清除案例到 SVN 迁移
我们计划将由明确案例控制的项目版本迁移到 SVN。我试过polarion提供的SVNImporter。它可以用于小型 vob 迁移。但是当vob更大(200mb)时,我会得到堆内存错误(我设置了 -Xmx = 1024m ),并且执行该过程很慢。
任何人都有一些 CC 到 SVN 迁移的经验,并且知道其他一些适用于大型 clearcase vobs 的开源工具?或者任何可以分享的建议/最佳实践将不胜感激。
更新:我们需要明确案例的文件、分支、标签的历史记录
version-control - 从 Veracity 迁移的建议?
关于改进我从 Veracity 迁移的方法有什么建议吗?
背景:
我终于用Veracity达到了我的极限:
- 所有尝试提交(使用 6 个月后)突然给出“
Error 101 (sqlite): sg_wc_db:tbl_gid can't find alias 7033.
”(我搜索过 - 在任何地方都找不到帮助)。 - Veracity 2.5(最新版本)在此最新编辑时已超过 4.5 年。
- http://veracity-scm.com/qa上的“问题”链接(以前很有用)现在
提供 404简单地重定向回主页。 - 围绕 Veracity 的在线社区似乎太小了,而http://sourcegear.com/似乎专注于其非开源版本控制系统。
总之,我对 Veracity 管理我的重要部分失去了信心。
我使用的提取方法(诚然技术含量低):
- 使用“
vv fast-export
”为我的新 DVCS 获取快速导入流。这保留了源历史。 - 手动将我的 Veracity wiki 页面复制到我使用的另一个现有 wiki。
- (最乏味)仔细研究我的 Veracity 工作项目,以确保我没有丢失对我的项目至关重要的信息。
结论:
我最初被 Veracity 的集成 wiki 和错误跟踪功能所吸引。我现在对那个选择感到后悔,并回到了更主流的 DVCS 选项。
git - 在 git-svn 迁移之后:稍后迁移未迁移的分支?
我们最近从 SVN 迁移到了 git。不幸的是,只迁移了主干,但没有迁移生产版本的错误修复分支。8-{ 几个月后现在可以迁移丢失的分支吗?不幸的是,再次进行完全迁移会很烦人,因为我们已经在存储库上工作了一段时间。
version-control - 在 CVS 存储库中的 RCS 文件格式中,xy0.2 作为修订版表示什么?
背景
我正在尝试从 CVS 存储库中抢救代码。我正在reposurgeon
为此目的使用,并且我尝试了以下工具来让自己git-fast-import
流式传输:
cvs-fast-export
, 出错(所谓的循环分支,但未提供详细信息)cvs2git
其次git-fast-export
,它把事情混搭在了无法理解的范围之内git-cvsimport
其次是git-fast-export
,它创造了迄今为止最好的结果,但最终也会把东西扔到他们不属于的树枝上。
此 CVS 存储库已在各种 CVS 版本上运行,并且标签和分支已被强制移动。我知道这意味着我不能再挽救那些分支和标签了。但就这样吧。
尽管如此,我有六个分支(在更多分支中),加上MAIN
,我有兴趣在转换为git-fast-import
流期间保留这些分支。我的目标 VCS不是Git,但关键是reposurgeon
它以这种方式处理其输入并以这种方式输出。
为了理解工件并在预处理阶段通过rcs -o<rev>
(当然是在我的 repo 的副本上)清理尽可能多的旧东西(包括孤立的修订版),我需要了解如何rcsfile
格式工作的内部结构。
rcsfile.py
修改模块后解析是小菜一碟rcsgrep
。但这还没有为我提供任何有关修订号的信息,尤其是那些没有相应 delta+log 的修订号的含义。
我所看到的
根据RCS 文件手册页,不应该出现修订 ID 的第三段为 0 的情况。但我确实看到了这种情况。
这是我所做的(作为实验)。
- On
MAIN
: 提交文件 (1.1
) - 从
MAIN
: 分支到BranchX
(1.1
) - On
BranchX
: 更改文件 (1.1.2.1
) - On
BranchX
: 再次更改文件 (1.1.2.2
) - On
MAIN
: 更改文件 (1.2
) - On
MAIN
: 标记文件foobar
(1.2
) - 从
MAIN
: 分支到BranchX
,移动分支标记 (1.2
),有效地将前一个分支孤立在1.1.2.x
- On
BranchX
: 删除文件 (1.2.2.1
) - On
MAIN
: 更改文件 (1.3
) - On
MAIN
: 强制标记文件foobar
(1.3
) - On
MAIN
: 更改文件 (1.4
) - On
MAIN
: 标记文件foobarbaz
(1.4
)
正如您在上面的列表和下面完全复制的文件中看到的那样,没有1.2.0.2
以带日志的 delta 形式进行的修订。
现在我的问题
如果我新分支修订版x.y
(没有文件更改!),则生成的修订版 ID 为x.y.0.2
. 这类似于我看到和询问的神秘修订 ID。
- 是否
0
表明该文件没有增量,因此我必须返回其祖先以获取实际内容? - 还是 0 只是表示该分支的“根”,第四段是该分支的最新版本?
谁能阐明这些问题或指出比上面链接的手册页更全面的材料?
以下是完整的 RCS 文件:
git - SVN 到 git 迁移只创建 .git 文件夹
我正在尝试从 svn 迁移到 git。我尝试使用以下工具这样做
然而,这两个工具只创建了一个.git
文件夹,没有签出文件和文件夹(说一个工作副本)。
我git-svn
尝试执行以下操作
我到底做错了什么?
ps 我试过谷歌搜索,但所有博客都声称这两个命令都应该创建一个包含所有文件和文件夹的本地存储库。还有一次我使用 hg convert 将 svn 项目转换为 mercurial 项目。在将 svn 项目转换为 mercurial 项目后,我完成了 hg up 或类似的操作,它带来了项目的所有文件和文件夹,我可以轻松地将该项目推送到 mercurial 服务器。这里我只有一个 .git 文件夹。我错过了哪一步,或者我到底做错了什么?
git - Git相当于Mercurial阶段?
在 mercurial 中,我经常使用秘密变更集来跟踪我在尚未准备好推送的内容上的工作。然后,如果我需要对某个文件进行紧急更改,我可以更新到公共修订,进行更改并推送它,而不必担心我未完成的更改集被推送。
IE:
您将如何在 git 中执行此操作?