【问题标题】:how to use git command with MSBuild?如何在 MSBuild 中使用 git 命令?
【发布时间】:2011-10-24 16:33:20
【问题描述】:

我正在考虑使用 git submodules 来检索我的 git 存储库的依赖项,而不是将二进制文件提交到我的主存储库(实际上只将二进制文件提交到我能够做到的不同存储库经常清除 -- 清除我的意思是删除历史记录以节省服务器上的空间...)。

问题是,如何使用 MSBuild 调用 GIT 可执行文件?在开发人员机器中,git 应该已经在路径中,但在 buildagents 中,git 可执行文件的路径将来自环境变量。如何在编译时使用 MSBuild 找出 git 路径?每次构建时,我都想对 git 子模块进行 git pull。

谢谢

【问题讨论】:

    标签: .net git msbuild xbuild


    【解决方案1】:

    在 MSBuild 中读取环境变量的方式与读取属性的方式非常相似

    所以如果传递的环境变量是GIT_PATH,你可以使用$(GIT_PATH)访问它

    将此连同适当的参数一起提供给exec 任务

    【讨论】:

    • 是的,谢谢,但是在检查环境变量之前,首先要检查“git”命令是否已经可以访问?
    • @knocte 您可以(再次使用 exec 任务)where git 并查看 git 是否已经在 PATH 上
    • manojlds,我仍然不知道该怎么做,因为“where git”不会生成与不返回有效路径的调用不同的 exitCode(例如“where somecommandthatdoesnotexist",仍然返回 exitCode==1)。
    • 所以我只想用 MSBuild 做的是以下伪代码: var gitPath = Where("git"); if (String.IsNullOrEmpty(gitPath)) gitPath = Environment.GetVariable("GITPATH"); if (String.IsNullOrEmpty(gitPath)) throw new Exception ("git is not installed; install it or specified its path in the GITPATH env var") var p = new Process(); p.StartInfo.FileName = gitPath; p.StartInfo.Arguments = "foo"; p.Start();
    • “where”命令的文档说明它在找到有效匹配时返回退出代码 0,在没有匹配时返回 1,在出现错误时返回 2。它总是像我记录的那样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2012-09-29
    • 2011-02-15
    相关资源
    最近更新 更多