加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 如何获取工作目录哈希确认所有未提交的更改?

发布时间:2020-12-14 04:30:21 所属栏目:Windows 来源:网络整理
导读:我的软件构建过程的一部分包括将工作目录parent的哈希值转换为C字符串以包含在“version”输出中.这是通过使用hg identify -i来获取全局修订版ID,并将此输出复制到.h文件中以进行包含来完成的.我在 Windows批处理文件中执行此操作: setlocal enabledelayede
我的软件构建过程的一部分包括将工作目录parent的哈希值转换为C字符串以包含在“version”输出中.这是通过使用hg identify -i来获取全局修订版ID,并将此输出复制到.h文件中以进行包含来完成的.我在 Windows批处理文件中执行此操作:

setlocal enabledelayedexpansion
for /f "tokens=1 delims=;=" %%a in ('hg identify -i') do (
  echo const std::string revision^(_T^("%%a"^)^); > rev.h
)

这将输出这样的东西到文件中:

const std::string revision(_T("3b746fd492c6"));

如果工作目录有任何未提交的更改,则哈希值会附加,使字符串“3b746fd492c6”.这使我可以轻松检查我构建的软件版本是否受控 – 如果字符串包含a,则软件无法从存储库中重现.

但是,hg标识添加了一个表示未提交的更改,但它无法识别未跟踪的文件.如果我提交所有更改但忘记添加那些非常重要的“do stuff”类,hg标识将不会指出这一点.

所以我的问题是:我如何获得所需的功能?
如何模拟hg识别识别新文件和删除文件?

理想情况下,我不想使用扩展,但会将它们视为一种选择.

更新

继Oben Sonne建议使用hg st和hg id -r的组合之后.我提出了以下批处理文件,它产生了相当不错的结果:

@echo off
set REPOMODS=
for /F %%a IN ('hg st -n') DO set REPOMODS=+

for /f "tokens=1 delims=;=" %%a in ('hg identify -i -r .') do (
  echo const std::string revision^(_T^("%%a%REPOMODS%"^)^); > rev.h
)

%REPOMODS%为空,除非hg st的输出中有任何内容,在这种情况下它是.我做了一些测试,似乎工作.

是否有另一种解决方案需要在批处理文件中减少麻烦?或者这是我能得到的最好的?

解决方法

如何简单地检查hg st的输出是否为空?如果没有,请将自己添加到版本中(如果尚未由hg id给出).

更新:为了防止双重问题,你可以运行hg id -r.,它永远不会给你一个尾随.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读