相关疑难解决方法(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
查看次数

如何在 2.27+ 中使用 git sparse-checkout

我试图从以下几个教程步骤中重现:

https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout

这是为 git 2.25 制作的,但现在在 2.27 中,运行时什么也没有发生:

$ git sparse-checkout set client/android
Run Code Online (Sandbox Code Playgroud)

我找不到让它工作的方法。

这是一个 MWE:

$ git clone --no-checkout https://github.com/derrickstolee/sparse-checkout-example
Cloning into 'sparse-checkout-example'...

$ cd sparse-checkout-example/

$ git sparse-checkout init --cone
Run Code Online (Sandbox Code Playgroud)

使用 git 2.25,我获得了一个非空目录:

$ ls -a
.  .. bootstrap.sh LICENSE.md  README.md .git
Run Code Online (Sandbox Code Playgroud)

使用 git 2.27,我获得了一个空目录:

$ ls -a
.  .. .git
Run Code Online (Sandbox Code Playgroud)

git

8
推荐指数
1
解决办法
2027
查看次数

在当前目录之外获取GIT构建哈希

我正在使用CMake来完成我的项目的核外/源外构建,并希望在项目中包含"git describe --tags --dirty"的结果作为版本号(仅供参考bug.但是,任何尝试告诉git代码repo所在的任何尝试都会导致错误,例如"致命:不是git存储库(或任何父目录):.git".

除了当前的工作目录之外,有没有办法指定git应该在哪里查找repo?

git cmake

3
推荐指数
1
解决办法
308
查看次数

标签 统计

git ×2

build ×1

c# ×1

cmake ×1

mercurial ×1

visual-studio-2008 ×1