【问题标题】:Scripting "git remote add ..." in a grunt task在 grunt 任务中编写“git remote add ...”脚本
【发布时间】:2014-07-22 17:56:49
【问题描述】:

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

到目前为止,一切似乎都运行良好,除了一件小事。为了设置远程存储库,我正在调用:

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

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

第二次运行 grunt 任务时,git 报错远程仓库已经设置好了:

fatal: remote deploy already exists.

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

【问题讨论】:

    标签: git deployment gruntjs web-deployment


    【解决方案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
    

    【讨论】:

    • 鉴于我在 Windows 上工作,是否有类似的方法来确定 git 是否已经包含可以在 Windows 上工作的遥控器?
    • 它可以在 Windows 上运行:你可以使用 git bash(通常在 Windows 上与 Git 一起安装)
    • 不幸的是 git bash 不是一个选项。那好吧。值得一试。
    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 2023-02-02
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2011-04-05
    相关资源
    最近更新 更多