在 SVN 中添加带有修订号的文件

Posted

技术标签:

【中文标题】在 SVN 中添加带有修订号的文件【英文标题】:To add a file with a revision number on commit in SVN 【发布时间】:2012-02-09 19:26:29 【问题描述】:

我不确定这是否可以通过 Subversion 实现,但有没有办法在提交时添加带有修订号的文件?

文件名:revision.txt 只有一行:修订号 如果存在,使用新的修订号更新

更新:

好的,我已将此选项添加到我的 SVN 配置中

[auto-props]
enable-auto-props = yes
*.php = svn:keywords=Id

这是我正在使用 SVN(命令行)签入的文件

<?php
/**
 * $Id$
 */
?>
$Id$

查看存储库,我只看到上面的代码,没有看到修订号。

【问题讨论】:

您是在谈论$id$ 关键字替换吗? svnbook.red-bean.com/en/1.7/… Subversion: Add revision data to code file on commit的可能重复 【参考方案1】:

也许这会有所帮助:

http://www.startupcto.com/server-tech/subversion/setting-the-id-tag

【讨论】:

所以只需将 $Id$ 添加到文件并签入?,现在测试 查看那篇文章,它在客户端。 谢谢,也必须设置文件:find . ( -name ".php" -o -name ".js" ) -exec svn propset svn:keywords Id \; -1 这不是答案。 This meta 上的帖子更详细地解释了我的意思,但总结一下,“答案”应该包含答案,而不仅仅是指向可能会或可能不会回答问题的链接并且可能存在也可能不存在未来。【参考方案2】:

前言

如果您想获得存储库的全局修订号,您会得到错误的解决方案,甚至以不是最佳的方式

实施这个糟糕的解决方案

存储库的最大修订 ID 始终可以在工作副本中访问,无需额外的技巧。
$svn info .

...

Revision: 9012
Node Kind: directory

...

Last Changed Rev: 5381

...

$svnversion

9012

可以使用纯 $Revision$ 关键字获得文件的修订版本(与 repo-revision 不同) 文件的修订是本地属性,与版本库修订无关,仅在上次更改此文件时显示,您必须在上更改文件revisions.txt >工作流程中的每一个提交 我认为没有理由使用 1. auto-props 2. 用于所有 php 文件。如果您想在一个文件中包含 svn:keyword,您可以将关键字添加到此文件 (revisions.txt) 和 svn propset 仅此文件 svn:keyword 将扩展为它的值在工作副本中,所有 repo-browsers 将显示source-text without expansion(您可以检查显示的文件并查看所有使用的关键字很好地扩展) 毕竟,如果您想提供 1. 版本号 2. 存储库 3. 用于源的未版本化副本(因为对于版本化 WC,我们已经拥有它),您可以考虑某种类型的构建系统,其中,除了 'svn export',用请求的数据在导出的源代码树内构建所需的文件。使用哪些工具(和技术)取决于操作系统(以及可用工具的问题):Windows 上的 SubWCRev(TSVN 的一部分)运行良好,Tux 世界中的端口和等效项也存在。共同点 - 您有版本化的模板文件,当您准备未版本化的捆绑包时,该模板文件(作为构建过程的一部分)将转换为具有实际新数据的文件。这样,我从svn.exe export ... z:\trunk$WCDATE=%Y%m%d$-r$WCREV$ 模式命令导出到唯一的目录名称和文本文件中的相同 WCDATE 模板替换为人类可读和信息数据,$WCDATE=%Y%m%d$-r$WCREV$20120122-r1143 在最新提交

【讨论】:

以上是关于在 SVN 中添加带有修订号的文件的主要内容,如果未能解决你的问题,请参考以下文章

修订号的 Git 等价物是啥?

svn diff 获取完整文件?

如何在 SVN 中查找文件被删除/移动的所有提交(修订号)

svn:修订文件缺少尾随换行符

在修订之间创建“补丁”?

使用Tortoise Git进行SVN to GIT迁移