【问题标题】:Published using capistrano, is it possible to know which version is running using GIT? or anything?使用 capistrano 发布,是否可以知道使用 GIT 运行的是哪个版本?还是什么?
【发布时间】:2011-04-28 01:02:28
【问题描述】:

我使用 capistrano(也使用 git)将代码推送到我的服务器。

然后我在我的笔记本电脑上进行了更改,但还没有发布到服务器。

我想知道我推送到服务器的 git 版本,以便回滚到那个版本。

这可能吗?

我知道我应该使用标签,但有点晚了,希望我能弄清楚我推送到服务器的版本,这样我就可以回滚到那个版本,或者至少从那个版本到当前构建的版本来看看什么从那以后发生了变化。

【问题讨论】:

    标签: ruby-on-rails git capistrano


    【解决方案1】:

    Capistrano 应该在服务器上的#{your_app}/current 下放置一个 REVISION 文件,并带有已部署提交的 SHA:

    比如:

         git diff `ssh your_user@your_server "cat /path/to/your/app/current/REVISION" `
    

    应该为您提供适当的差异。

    【讨论】:

    • 让我检查一下,我认为 current 下的文件夹更像是日期时间而不是 sha 哈希。
    • 我部署的 REVISION 文件为空。有谁知道为什么会这样?
    • 当我使用“复制”策略时,REVISION 文件似乎为空。 set :scm, :none set :repository, "." set :deploy_via, :copy set :copy_exclude, [".git", "log", "tmp", "bundle"]
    【解决方案2】:

    是的,你可以检查你的 reflog。

    git reflog
    

    但你应该在发布时标记。

    希望对你有帮助

    【讨论】:

    • 我应该寻找什么?
    • progit.org/book 是一个良好的开端,可以让您顺利使用标签。
    【解决方案3】:
    git fetch
    git log origin/master -1
    

    fetch 与您的服务器同步,log origin/master 显示您服务器的 git 存储库而不是本地存储库的日志。 -1 告诉它只显示最后一次提交。这将显示您服务器存储库上最后一次提交的提交哈希和消息。

    如果您的服务器在您的遥控器中列为 origin 以外的其他名称,或者您的服务器正在使用 master 以外的分支,则您必须更改它。但是“origin”和“master”是默认的,如果你没有改变它是标准的约定。

    <subjective> 除非您明确地对软件进行版本控制(例如,在创建 gem 时),否则每次部署应用程序时都没有必要添加标签。这很快就会变得笨拙。使用 git,如果需要,可以像使用标签一样使用提交哈希。</subjective>

    【讨论】:

    • 不确定这是否相关,但我发布到的服务器与拥有裸 git repo 的服务器相同。
    • 它是否是一个裸仓库无关紧要。你是说这没用?
    • git 服务器上的当前版本不一定是最后部署的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多