在git存储库中,我想通过MSBuild添加一个子模块。我认为以下内容可以让我这样做。
<Exec Command='git submodule add -f git@clone-url.git "sub/module/folder"' />
不幸的是,execute命令永远不会完成。出现以下消息,直到我终止脚本为止。
Cloning into 'sub/module/folder'...
我猜是git正在询问我的用户名和密码。由于某种原因,输出永远不会传递到主命令窗口,因此我可以输入存储库的用户名和密码。
无论如何都要知道它为什么暂停或允许执行命令输出到主窗口?
答案 0 :(得分:1)
Exec
任务继承自Microsoft.Build.Utilities.ToolTask
,它在设计创建时关闭输入流,例如在Visual Studio而不是MSBuild下执行时,threre没有输入。
proc.Start();
proc.StandardInput.Close();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
To&#34;接受&#34;输入你必须管道,或者让你自己的自定义/内联任务创建Process
或者用start
添加命令以通过新的cmd
窗口转义重定向。
或使用ssh密钥文件。
答案 1 :(得分:0)
以前有人试图让Exec task命令要求输入密码,但这很复杂,因为:
但是,
Exec
任务与更具体的任务不同,无法从其运行的工具或命令中收集输出。
请参阅&#34; Exec task in msbuild TFS won't execute exe properly&#34;),如cmd /c git submodule...
中所述,以防万一可行。