Scripting" git remote add ..."在一项艰巨的任务中

时间:2014-07-22 17:56:49

标签: git deployment gruntjs web-deployment

我正在创建一个将Django应用程序部署到远程服务器的部署脚本。这是通过将git存储库推送到该远程服务器来完成的。为了让其他开发人员尽可能轻松,我试图通过一项艰巨的任务尽可能地自动化。 grunt任务的最终目标是设置所需的一切,推送到远程存储库,然后自行清理。

到目前为止,除了一件小事之外,一切似乎都运作良好。为了设置远程存储库,我打电话给:

git remote add deploy ssh://<ServerUsername>@<serverIp><RepositoryDirectory>

...其中每个值都被正确替换。

第二次运行grunt任务时,git抱怨已经设置了远程存储库:

fatal: remote deploy already exists.

因为这会返回非零值,所以grunt脚本的其余部分将失败。我想知道的是:是否有任何类型的命令行参数,我可以传递给“git remote ...”,它将更新或创建对远程存储库的引用而不抱怨?除此之外,有没有办法通过命令行检查是否已经创建了对远程git存储库的特定引用?

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是继续使用url而不是远程。在bash中它意味着替换

myRemote=ssh://<ServerUsername>@<serverIp><RepositoryDirectory>
git remote add deploy $myRemote
git push deploy master

通过

myRemote=ssh://<ServerUsername>@<serverIp><RepositoryDirectory>
git push $myRemote master

话虽这么说,如果你只想添加遥控器,如果它还不存在,你可以用bash

if ! git remote | grep deploy >/dev/null; then
  git remote add deploy $myRemote
fi