Clearcase - 将两个文件合并为一个具有统一历史记录的文件

Posted

技术标签:

【中文标题】Clearcase - 将两个文件合并为一个具有统一历史记录的文件【英文标题】:Clearcase - Unite two files into one file with united History 【发布时间】:2021-10-08 16:22:55 【问题描述】:

我有两个不同的文件,每个文件都有自己的历史记录,我想将它们合并为一个,但保留两个历史记录。

例如(我的实际问题): 我有x.vcprojx.vcxproj,在从旧的视觉工作室转换到新的视觉工作室之后(我什至不记得这些是哪一个了)。 基本上在转换之后,我们一起停止使用旧格式。

当时应该做的是编写一个脚本来遍历所有转换的项目(在向 clearcase 添加任何内容之前):

检查 x.vcproj 及其包含的文件夹。 将x.vcxproj 重命名为某个临时文件,比如x.vcxproj.temp 使用cleartoolx.vcproj 重命名为x.vcxprojx.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 递归地“添加到源代码控制......”?

无法合并具有两个不同实体的模型

在 Hadoop 中合并 CSV 文件 [关闭]

使用 powershell 将两个 azure blob 合并为单个 blob

将具有不同架构(列)的多个文件 (.csv) 合并/合并为单个文件 .csv - Azure 数据工厂