Process执行Git命令出现的错误:error: failed to execute prompt script (exit code 1)

前言:
如何通过Gitlab的Webhook功能在windows服务器下自动部署代码,请参考之前的一片文章:
Gitlab通过Webhook在Windows服务器下自动部署前端代码

今天配置新服务器上的代码自动发布程序,由于webhook代码很早之前就部署到服务器上了,且不是为了自动部署程序,所有未配置应用程序池权限,当Process执行git pull命令时出现了问题。
以下为完整错误信息:
Logon failed, use ctrl+c to cancel basic credential prompt.
bash: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Username for 'http://xxx.xxx.com/': No error

之前的文章《Gitlab通过Webhook在Windows服务器下自动部署前端代码》由于在执行Process时未配置错误输出,导致一直看不到错误信息。Process可以执行完成,但是没有返回值。猜测肯定出现了异常,在原先的代码基础上加入错误返回的信息,就可以看到出现的错误信息。调整后的代码如下:
		public string Run(string args)
		{
			var starInfo = new ProcessStartInfo(FilePath, args)
			{
				CreateNoWindow = true,
				RedirectStandardOutput = true,
				RedirectStandardError = true,
				UseShellExecute = false,
				WorkingDirectory = WorkingDirectory
			};

			Process process = Process.Start(starInfo);

			return process.StandardOutput.ReadToEnd() + process.StandardError.ReadToEnd();
		}
错误是看到了,但是这个异常明显是执行命令时没有读取到git的登录信息。

这是由于之前服务器已经存储过一个其他人的登录gitlab服务器的信息,而我拉取代码时使用的用户信息则无法保存到主机上导致的,那我们也不能清除别人的用户信息吧。所以想其他办法。

第一种解决方案,也是最直接的解决方案,修改IIS配置。

IIS配置有两点要修改,找到部署服务站点的应用程序池,高级设置中有两个地方。

a.进程模型中的标识要修改服务器管理员账号或者有管理员权限的账户。

b.进程模型中的加载用户配置文件设置为:True.

做完以上就可以正常的使用了。

第二种解决方案,对应项目的远程仓库连接地址配置用户信息,配置方式如下:

https://username:password@xxxx.xxx.com/仓库地址。

此方法虽说可以正常从我们的git服务器上拉取代码了,可能还是会报一点错误信息,不过不影响使用,可以忽略。

错误如下:

fatal: Win32Exception encountered.
   Failed to write credentials

此错误是由:process.StandardError.ReadToEnd()输出的。但是我们的执行的git命令正确的输出结果也是有的。所有可以忽略此错误信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值