17

在静态视图中,如何查看文件的旧版本?

给定一个空文件(empty在本例中调用),我可以颠覆diff以向我展示旧版本:

    % cleartool diff -ser 空文件@@/main/28

这感觉就像一个非常丑陋的黑客攻击。我错过了更基本的命令吗?有没有更简洁的方法来做到这一点?

(我不想编辑配置规范 - 这很乏味,我正在尝试查看一堆旧版本。)

澄清:我想将文件的版本发送到标准输出,这样我就可以将它与 Unix 的其余部分(grep、sed 等)一起使用。如果你发现这个问题是因为你正在寻找一种方法来保存文件中元素的版本,请参阅Brian 的回答

4

5 回答 5

15

我正在尝试查看一堆旧版本

我不确定您是在谈论一个文件的“一堆旧版本”,还是来自多个文件的“一堆旧版本”。

要可视化一个文件的多个旧版本,最简单的方法是显示其版本树 ( ct lsvtree -graph File),然后选择一个版本,右键单击它并“ Send To”一个接受多个文件的编辑器(如 Notepad++)。只需单击几下,您就可以查看这些旧版本。
注意:您必须拥有 CC6.0 或 7.0.1 IFix01(7.0.0 和 7.0.1 无法“发送到”文件并显示以下错误消息“ Access to unnamed file was denied”)

但是为了可视化不同文件的几个旧版本,我建议使用动态视图并编辑该视图的配置规范(而不是您当前正在使用的快照视图),以便快速选择所有这些旧文件(希望通过简单的选择规则,如' element * aLabel')


[来自评论:]

“cat”文件的早期版本的惯用方式是什么?

惯用的方式是通过动态视图(您使用与现有快照视图完全相同的配置规范进行配置)。

然后,您可以浏览(如“将目录更改为”)文件的各种扩展路径

如果要对文件分支的所有版本进行分类,请输入:

cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch
cat 1
cat 2
...
cat x

' 1', ' 2', ... ' x' 是该分支中文件的版本 1、2、... x。


对于快照视图扩展路径不可访问,因此您的“hack”是要走的路。

但是,这里有两条评论:

  • 要快速显示给定分支中快照文件的所有先前版本,您可以键入:

(用于复制粘贴的一行版本,Unix 语法:)

cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! 版本(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'

(多行版本的可读性:)

cleartool find addon.xml -ver 'brtype(aBranch) &&
                               !version(.../aBranch/LATEST) &&
                               !版本(.../aBranch/0)'
          -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
  • 您可以快速获得更好的输出

(用于复制粘贴的一行版本,Unix 语法:)

cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! 版本(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=$_; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;打印 $b if $a =~/^>/'

(多行版本的可读性:)

cleartool find addon.xml -ver 'brtype(aBranch) &&
                               !version(.../aBranch/LATEST) &&
                               !版本(.../aBranch/0)'
         -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
| ccperl -nle '$a=$_; $b = $a;
               $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;
               如果 $a =~/^>/' 则打印 $b

这样,输出更好。


Brian下面提到cleartool get ”命令(手册页)不执行标准输出:

get 命令仅将文件元素复制到视图中。

在 UNIX 或 Linux 系统上,复制/dev/hello_world/foo.c@@/main/2到当前目录。

cmd-context get –to foo.c.temp /dev/hello_world/foo.c@@/main/2

在 Windows 系统上,复制\dev\hello_world\foo.c@@\main\2C:\build目录中。

cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main\2

因此,也许通过将结果传递给cat(或type在 Windows 中),您可以对所述cat( type) 命令的输出执行某些操作。

cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main\2 | type C:\build\foo.c.temp 
于 2008-10-07T06:03:44.020 回答
13

我知道这是一个旧线程......但我不能让这种颠簸没有解决......

静态视图有一个“ct get”命令,它完全符合您的要求。

cleartool get -to ~/foo File@@/main/28

将这个版本的文件保存在~/foo.

于 2011-02-10T21:01:53.303 回答
2

[根据第一条评论重写]

Clearcase 中的所有文件,包括版本,都在虚拟目录结构中可用。我对静态视图不是很熟悉,但我相信它们仍然通过虚拟 fs;他们只是以不同的方式更新。

在这种情况下,您可以这样做:

   cat File@@/main/28

如果您还必须找到包含该文件元素的目录的正确版本,它可能会变得很难看。我们有一个 PERL 脚本在工作,它使用这种方法来分析对文件所做的历史更改,我们很快就用完了 Windows 上的命令行空间来实际运行命令!

于 2008-10-07T04:58:25.073 回答
1

如果 File 是 Clearcase 元素,并且cat File可以正常工作,并且视图设置正确,请尝试:

cat File@@/main/28

(注意:没有ct shell-- 如果您已经在视图中,则不需要它。)

尝试输入:

ct ls -l File

如果它显示具有与上述类似的扩展名的文件,那么您应该能够使用扩展名来分类文件。

于 2010-10-05T21:50:33.493 回答
-1

ct shell cat File@@version

于 2009-12-28T05:27:41.633 回答