3

首先,感谢您花时间阅读本文并可能对其发表评论。

概括

在文件上设置自定义 SVN 属性并提交后,我无法获得设置了各种选项的“svn log”命令来在提交后显示该属性。我已经按照 SVN 红皮书中的这个例子无济于事(可搜索性小节)。

我的环境

服务器:我正在使用在 64 位 Windows Server 2008 R2 上运行的 32 位 SubVersion Server 版本 1.6.15

客户端:在 32 位 Windows XP Pro SP3 上运行的 TortoiseSVN 1.6.16。

该 repo 是一个测试 repo,没有任何可用的钩子。

我的场景

在名为test.txt的文件上设置名为active-projects的自定义属性并将该更改提交到存储库后,我尝试执行以下操作:

svn log --with-all-revprops --xml [url_to_test.txt]

使用--with-all-revprops应该向我展示我的自定义属性,但可惜的是,上面以 XML 格式返回了有效信息,但不包括具有名为active-projects的属性的revprops元素及其各自的值。

尝试在包含test.txt的本地目录中执行以下命令会产生与上述相同的结果:

svn log --with-all-revprops --xml test.txt

有趣的是,我可以通过我的 repo 浏览器在该 URL 上看到该文件的上述属性。如果我在包含test.txt的本地目录中执行以下命令,则按预期返回属性的值:

svn propget active-projects test.txt

结论

那么,有什么想法为什么我无法使用 URL 或本地路径通过svn log命令找到我宝贵的活动项目自定义属性?可能是我误解了这个概念,或者遗漏了一些重要的服务器配置。感谢您的洞察力。

4

1 回答 1

2

您混淆了修订属性常规属性。修订属性是为整个修订设置的,并且仅适用于该修订(它们是未版本化的),常规属性是按项目(目录/文件)设置的并且是版本化的(即,如果您更改它们,它们仍将存在于早期版本的项目;它们可以被区分,等等)。

您设置了一个项目属性,同时svn log --with-all-revprops返回修订属性,而不是项目属性。

以下是更多信息svn propset --help

$svn propset --help
propset (pset, ps): Set the value of a property on files, dirs, or revisions.
usage: 1. propset PROPNAME PROPVAL PATH...
       2. propset PROPNAME --revprop -r REV PROPVAL [TARGET]

1. Changes a versioned file or directory property in a working copy.
2. Changes an unversioned property on a repository revision.
 (TARGET only determines which repository to access.)

希望这能消除混乱。

于 2012-05-01T14:21:03.923 回答