【问题标题】:CVS: Get the state of some branch in some dateCVS:在某个日期获取某个分支的状态
【发布时间】:2010-07-21 14:43:11
【问题描述】:

我有一个带有分支的大项目。所有的开发都集中在分支上。 前段时间想得到这个分支的状态,但是不能

 cvs up -r branch_name -D 2010-05-01

给我(在 cvs 状态 Makefile 中)粘性标签,但最新版本的文件,而不是 2010-05-01

 cvs up -D 2010-05-01 -r branch_name

忽略标签并更新到该 HEAD 的日期

 cvs up -r branch_name:2010-05-01

也不起作用,它会忽略日期并更新分支的当前状态。

【问题讨论】:

  • 我似乎记得有一个涉及冒号的特殊语法,但我现在在文档中找不到它......
  • 嗯,它只记录在 -j 选项(即合并)但我认为它也可能适用于 -rcvs up -r branch_name:2010-05-01(未测试)
  • 奥利弗·吉森,请添加这个作为答案

标签: tags cvs sticky


【解决方案1】:

cvs update -PdC -r BRANCH-NAME-HERE -D "Saturday, May 1, 2010 0:00:00 AM UTC"

如果您知道时间,请添加...

【讨论】:

  • “P”、“d”和“C”选项的含义是什么?
  • * P = 修剪空目录 * d = 如果 repo 中有任何不在工作区中的目录,则创建它们 不确定“C”是什么,但一直使用它。 .
  • 这似乎并没有在那个时间点给出整个分支。它仅提供自原始分支以来已更改的文件。因此,当我按日期签出时,我发现文件丢失了。有没有办法得到整个分支?
  • 你的命令和@osgx 的命令有什么区别?我看到的唯一区别是顺序和日期格式。这真的很重要吗?
  • "P" 表示“修剪空目录。”,“d” - “构建目录,就像 checkout 一样。”和“C” - “用干净的存储库副本覆盖本地修改的文件。”。 “D”选项使用Make_Date/get_date 函数解析日期 - 在cvs/src/main.ccvs/lib/getdate.c 中定义(来自cvs/lib/getdate.y;他们应该能够解析“2004-04-29 20:24:22”。不知道真正的差异我的。
【解决方案2】:

这应该可以解决问题:

cvs up -r branch_name:2010-05-01

冒号语法仅记录在 -j 选项中,但可能也适用于 -r

【讨论】:

  • 有点奇怪,可能是它使用了一些不同的日期格式?它确实更新到旧版本,但不是 2010-05-01 的版本。
  • 嗯,-r 选项解析中有 parse_tagdate 调用 - cvs/src/update.c:205 (case 'r': parse_tagdate (&tag, &date, optarg); ) 应该解析日期:cvs/src/main.c:1146 "解析 TAG[:DATE 形式的字符串],其中 TAG 可以是空字符串。";它使用与 -D 选项中相同的 Make_Date/get_date 解析日期。
猜你喜欢
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
相关资源
最近更新 更多