相关疑难解决方法(0)

自动在Visual Studio c#项目中嵌入mercurial修订信息

原始问题

在构建我们的项目时,我希望将每个存储库的mercurial id嵌入到该存储库(库,应用程序或测试应用程序)的产品中.

我发现,如果您确切地知道构建他们正在使用的特定应用程序版本的内容,那么调试客户运行的应用程序将更加容易8个时区.因此,我们系统中的每个项目(应用程序或库)都实现了获取相关修订信息的方法.

我还发现能够查看应用程序是否已使用存储库中的干净(未修改)更改集进行编译非常有用.当存储库中存在未提交的更改时,'Hg id'会有用地在变更集ID中附加一个+,这样我们就可以轻松查看人们是否运行了干净或修改过的代码版本.

我目前的解决方案详述如下,并满足基本要求,但存在许多问题.

现行解决方案

目前,对于每个Visual Studio解决方案,我添加了以下"预构建事件命令行"命令:

cd $(ProjectDir)
HgID
Run Code Online (Sandbox Code Playgroud)

我还将HgID.bat文件添加到Project目录:

@echo off
type HgId.pre > HgId.cs

For /F "delims=" %%a in ('hg id') Do <nul >>HgID.cs set /p =            @"%%a"

echo ;                  >> HgId.cs
echo     }              >> HgId.cs
echo }                  >> HgId.cs
Run Code Online (Sandbox Code Playgroud)

以及HgId.pre文件,定义为:

namespace My.Namespace {
/// <summary> Auto generated Mercurial ID class. </summary>
internal class HgID {
    /// <summary> Mercurial version ID [+ is modified] [Named branch]</summary>
    public const string Version =
Run Code Online (Sandbox Code Playgroud)

当我建立我的应用程序时,将触发对所有库预生成事件,创建一个新的文件HgId.cs(没有版本控制下保持),并导致库重新编译与新的"汞ID" '版本'中的字符串.

当前解决方案的问题 …

c# mercurial build visual-studio-2008

54
推荐指数
3
解决办法
7701
查看次数

使用git-svn处理SVN关键字扩展

我最近询问了Git中的关键字扩展,我愿意接受这个设计,不要在Git中真正支持这个想法.

无论好坏,我正在进行的项目需要SVN关键字扩展,如下所示:

svn propset svn:keywords "Id" expl3.dtx
Run Code Online (Sandbox Code Playgroud)

保持这个字符串是最新的:

$Id: expl3.dtx 803 2008-09-11 14:01:58Z will $
Run Code Online (Sandbox Code Playgroud)

但我非常想用Git来进行版本控制.不幸的是,根据文档,git-svn不支持这一点:

"除了svn:executable之外,我们忽略了所有SVN属性"

但是,通过一些前/后提交挂钩模拟这个关键字的东西似乎并不太棘手.我是第一个想要这个的人吗?有没有人有一些代码来做到这一点?

svn git version-control

42
推荐指数
3
解决办法
2万
查看次数

标签 统计

build ×1

c# ×1

git ×1

mercurial ×1

svn ×1

version-control ×1

visual-studio-2008 ×1