我有一个远程机器,它有一个程序,使用一个只读svn的用户从仓库中下载一些源代码.现在正在使用svn,而不需要人工干预,我是这样想的:
执行 checkout :
p = Runtime.getRuntime().exec("svn checkout --non-interactive --trust-server-cert --username "+Constants.svnUser+" --password "+Constants.svnPassword+" "+repositoryURL+" ." , null , dir);
正在更新代码:
p = Runtime.getRuntime().exec("svn update --non-interactive --trust-server-cert --username "+Constants.svnUser+" --password "+Constants.svnPassword+" ", null , dir);
它运行得很好,但是现在我试图用一个只读的git用户从Git仓库下载源代码,我找不到用git做同样的非交互行为的方法。
给定一个git repo,一个git用户和一个git密码,如何在没有人为干预的情况下初始化git并克隆, checkout 或拉取源代码?
找不到任何关于如何给予这三个项目的信息。
提前谢谢你。
3条答案
按热度按时间moiiocjp1#
从git v2.3.0开始,你可以设置环境变量
GIT_TERMINAL_PROMPT=0
,以避免脚本在git命令等待手动认证时挂起。范例:
**来源:**man 1 git
t0ybt7op2#
我不知道你的用例,但我经常使用
--no-pager
标志,例如在终端直接输出diff
:$ git --无分页差异
qojgxg4l3#
Git命令没有
--non-interactive
开关,你只需要确保你调用命令的方式不可能是交互式的,这意味着你不应该使用git pull
,因为这会根据您的配置和参数执行merge
或rebase
,这可能会导致需要手动解决的冲突。相反,您应该使用git fetch
,然后使用一个命令将工作树替换为来自远程的内容,如git reset --hard master origin/master
或类似的内容。您可能会从http://gitolite.com/deploy.html中获得一些关于您实际要使用哪些命令的指针。