目前,对于我的C++项目,我运行一个预编译操作,该操作编写一个单独的头文件来捕获构建的git散列,从而有效地让我能够在程序运行时准确地看到程序的任何实例都是从哪个提交运行的。 到目前为止,像这样的东西是有效的: set file="%~dp0git_sha1.h"
echo #ifndef git_sha1H > %file%
echo #define git_sha1H >> %file%
set cmd=git rev-parse HEAD
set git_sha1=#define GIT_SHA1
for /f %%i in ('%cmd%&
我认为这是一个逃避的问题,但我不确定,因为我已经尝试了我能想到的所有逃避的组合,但它们都不起作用。
此Git命令返回我需要存储在批处理文件变量中的提交散列...
git show --grep="MySearchString" --pretty=format:"%H" --no-patch
此批处理文件命令有效...
for /f "delims=" %%a in ('git show --grep="MySearchString" --no-patch') do @set foobar=%%a
echo %foo
在批处理子例程中,我希望获得文件的最新git日期。 因此,在for循环中,我在format上获得了fatal: bad revision,但是当我在循环外执行相同的命令时,它工作得很好。我也尝试了"usebackq“,并得到了同样的结果。 set f=path/to/file.md
REM what I want to do...
for /f "delims=" %%p in ('git log -1 --format=^\^"%%ci^\^" -- %f%') do set g=%%p
REM test...
git log -
使用Gitlab CI/CD运行命令批处理文件。
我在我的系统中本地存储了一个批处理文件。现在我想从GitLab CI/CD文件中运行它。我使用以下格式运行YAML
Windows:
script:
- call: ci\CheckStatus.bat init
- call: ci\CheckStatus.bat build
tags:
- windows
,但是它给了我下面的错误
Found errors in your .gitlab-ci.yml:
jobs:windows:script config should be a string or an a