Clearcase - 将两个文件合并为一个具有统一历史记录的文件
Posted
技术标签:
【中文标题】Clearcase - 将两个文件合并为一个具有统一历史记录的文件【英文标题】:Clearcase - Unite two files into one file with united History 【发布时间】:2021-10-08 16:22:55 【问题描述】:我有两个不同的文件,每个文件都有自己的历史记录,我想将它们合并为一个,但保留两个历史记录。
例如(我的实际问题):
我有x.vcproj
和x.vcxproj
,在从旧的视觉工作室转换到新的视觉工作室之后(我什至不记得这些是哪一个了)。
基本上在转换之后,我们一起停止使用旧格式。
当时应该做的是编写一个脚本来遍历所有转换的项目(在向 clearcase 添加任何内容之前):
检查x.vcproj
及其包含的文件夹。
将x.vcxproj
重命名为某个临时文件,比如x.vcxproj.temp
使用cleartool
将x.vcproj
重命名为x.vcxproj
用x.vcxproj.temp
覆盖x.vcxproj
签入x.vcxproj
文件。
这在当时可以解决问题,但还没有做到,现在大多数 <Project Name>.vcxproj
已经拥有自己的广泛历史。
这两个文件的历史能否统一起来,如何模拟上述流程?
视觉示例:
发件人:
x.vcproj x.vcxproj
[main] [main]
| |
(0) (0)
| \ | \
| \ | \
| (0) [v1] | (0) [v2]
| | | |
| (1) | (1) <<- First Node of x.vcxproj
| | \ | |
| (2) \ (1)<(2)
| | (0) [v1.1] | | \
(1)<(3) | | | \
| (1) | | (0) [v2.1]
| | | | |
(2)<----(2) (2)<(3)<(2)
| | |
(3) (3)<----(3)
| \ |
| \ (4)
| (0) [v2] | \
| | | \
(4)<(1) <<- Last node of x.vcproj | (0) [v3]
| |
(5)<(1)
我想得到以下结果树:
x.vcproj -+-> x.vcxproj
[main]
|
(0)
| \
| \
| (0) [v1]
| |
| (1)
| | \
| (2) \
| | (0) [v1.1]
(1)<(3) |
| (1)
| |
(2)<----(2)
|
(3)
| \
| \
| (0) [v2]
| |
(4)<(1) <<- Last node of x.vcproj
| |
| (2) <<- First Node of x.vcxproj
| | Original Node (1) of [v2]
(5)<(3)
| | \
| | \
| | (0) [v2.1]
| | |
(6)<(4)<(2)
| |
(7)<----(3)
|
(8)
| \
| \
| (0) [v3]
| |
(9)<(1)
【问题讨论】:
【参考方案1】:这两个文件的历史能否统一起来,如何模拟上述流程?
不是通过原生的单个 cleartool 命令,而是使用脚本,该脚本将存在 x.vcxproj 和 x.vcproj 的文件夹:
签出父文件夹 删除 x.vcxproj 签出 x.vcproj,将其重命名为 x.vcxproj,然后签入 然后,对于 x.vcxproj 的每个版本,通读动态视图,访问父文件夹的先前版本(两个文件仍然存在的那个): 结帐 x.vcxproj, 用旧版本的x.vcxproj
覆盖其内容
签到
使用cleartool get
for that:
cleartool get –to x.vcxproj /path@@/main/<previousVersion>/x.vcxproj@@/main/x
【讨论】:
如果我理解正确,我需要遍历所有以前的版本并重建树(实际上只在最新版本上),丢失所有时间戳和原始节点的版本。一些项目有数百个节点和很多很多版本(自 2012 年 5 月以来)。所以不是一个真正简单的方法,实际上并没有真正保存历史。我将在我将创建的一些示例数据上尝试这一点。 是的。这就是想法。这种“历史合并”不容易支持,如果您正在谈论具有 9 年价值版本的文件......那就更不支持了;)我只是想暗示一个可能的实现,而不知道确切的代码库的范围。 我不确定是否有任何 SCM 工具可以让您轻松做到这一点,如果有的话。这是一个非常“奇怪”的请求。这里有什么背景故事? @brian-cowan 如果有办法将来自不同源代码控制的历史记录到 ClearCase 中,可能相同的方法可以从 ClearCase 应用到 ClearCase!?上面描述了背景故事,我们有数百个项目已转换,但不是将vcproj
重命名为vcxproj
,然后使用转换后的项目签入,而是现在有两个文件。 1) 有多余的文件 2) 项目的历史不完整 - 例如。找出何时将文件添加到项目中需要检查多个文件。 3) 最烦人的是误打开旧的vcproj
。
@Juv "如果有办法将来自不同源代码控制的历史记录到 ClearCase 中,是否可以从 ClearCase 应用到 ClearCase!?":是的,如果你可以从版本迭代到来自不同源代码控制的版本:它称为clearfsimport
,在***.com/a/39368173/6309 中也有详细说明。以上是关于Clearcase - 将两个文件合并为一个具有统一历史记录的文件的主要内容,如果未能解决你的问题,请参考以下文章
将具有相同列/索引的两个 pandas DataFrame 合并为一个 DataFrame
我如何使用 ClearCase 递归地“添加到源代码控制......”?