配置Mercurial关键字扩展以生成Subversion关键字

时间:2012-03-28 19:43:27

标签: svn mercurial keyword substitution

我想配置Mercurial Keyword Extension以支持所有Subversion keywords,即以Subversion的确切方式展开它们。我正在寻找这个以便将Mercurial和我的LaTeX包svn-multi一起使用,它允许用户在他们的LaTeX文档中读取和排版这些元数据。不幸的是,LaTeX解析方法不是很灵活,如果数据不是硬编码格式,会产生硬语法错误。 (该软件包已包含一些输入完整性检查,但它们是有限的。) 我意识到两个系统都会产生不同的版本号,但是使用Mercurial的短整数id形式应该这样做。

到目前为止,我有以下配置:

[keywordmaps]
Author = {author|user}
LastChangedBy = {author|user}
Date = {date|utcdate}
LastChangedDate = {date|utcdate}
Revision = {node|short}
Rev = {node|short}
LastChangedRevision = {node|short}
HeadURL = {root}/{file}
URL = {root}/{file}
Id = {file|basename} {node|short} {date|utcdate} {author|user}

Author已经很好了,但我很难以正确的格式获取DateRevision。我无法获得有关所有可能的替换及其过滤器的信息。 {date|utcdate}为我提供了2012/03/28 19:18:19格式,但我需要2006-07-22 21:42:37 -0700 (Sat, 22 Jul 2006)。另外,如何获取修订版号的整数版本(我知道,它在存储库中不是唯一的,但在这种情况下足够好)。是否可以将default拉/推目标替换为HeadURL

2 个答案:

答案 0 :(得分:3)

对于修订答案很简单:hg help templating

 rev           Integer. The repository-local changeset revision number.

此帮助

中也可以找到所有与日期相关的过滤器

JFYI,包含所有日期过滤器的日志记录

原始日志供参考

>hg log -r tip
changeset:   36:923cd64bcd36
tag:         tip
user:        Ray Bream <*@*>
date:        Sun Oct 30 10:16:00 2011 +0600
summary:     Синхронизация с 1.6

过滤器

>hg log -r tip --template "{date|age}"
5 months ago

>hg log -r tip --template "{date|date}"
Sun Oct 30 10:16:00 2011 +0600

>hg log -r tip --template "{date|hgdate}"
1319948160 -21600

>hg log -r tip --template "{date|isodate}"
2011-10-30 10:16 +0600

>hg log -r tip --template "{date|isodatesec}"
2011-10-30 10:16:00 +0600

>hg log -r tip --template "{date|localdate}"
1319948160.0-21600

>hg log -r tip --template "{date|rfc3339date}"
2011-10-30T10:16:00+06:00

>hg log -r tip --template "{date|rfc822date}"
Sun, 30 Oct 2011 10:16:00 +0600

>hg log -r tip --template "{date|shortdate}"
2011-10-30

对SVN日期的最近迭代将为{date|isodate} ({date|rfc822date}),但它在括号中包含时间

2011-10-30 10:16 +0600 (Sun, 30 Oct 2011 10:16:00 +0600)

提示:AFAIK,关键字定义不仅可以使用关键字,还可以使用任何hg命令甚至系统命令

答案 1 :(得分:0)

我在.hgrc中解决了这些关键字定义的问题:

LastChangedBy = {author|user}
LastChangedDate = {date|svnisodate}
LastChangedRevision = {rev}
HeadURL = {root}/{file}

希望它有所帮助。