如何在推送时自动结帐?

2023-12-25

考虑以下情况:

我有一个 git 存储库 foo.git,其中包含 javascript 项目的代码。在这个存储库中有一个分支生产包含由网络服务器提供的代码状态,该服务器从以下位置获取代码/var/www/foo。该存储库是该项目的主存储库。每个人都对其进行推拉。

是否可以有/var/www/foo更新为结账生产每当有人推送到那个特定的分支时?您可以假设 git 守护进程(或用户 git,即所有人登录通过 SSH 连接的用户)有权写入所述目录。


您必须在服务器上创建一个裸存储库git init --bare。 然后使用一个post-receive挂钩来触发您的部署。 如何部署取决于您。

我的部署策略

我通常放置一个deploy导演,有逻辑的地方。 然后每次结账,我都会将最新的分支解压到deploy/COMMIT_ID where COMMIT_ID是最新推送的哈希值。签出完成后,您可以将符号链接重新指向最新的部署目录。

我常用的目录结构:

deploy.git/
deploy/
    a7922231/
    b2f0a2af/
    latest -> b2f0a2af 

解压更新包

而不是使用git-checkout,我通常用git-archive将分支解压到目录中。

# Assuming current directory is deploy.git
HEAD=`cat refs/heads/master`
mkdir -p ../deploy/${HEAD}
git archive master | tar -x -C ../deploy/${HEAD}

您的网络服务器可以指向deploy/latest,更新或多或少将是原子的。

我经常在生产中使用它,并且比在同一目录上解包有一些好处。

  1. 回滚很容易
  2. 您可以执行解包后过程,例如编译或安装依赖项,而无需中断当前部署

Tips

  1. 每次更新,附加到部署日志这说明了更新发生的时间以及它们的哈希 ID 是什么。这会导致回滚much easier.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在推送时自动结帐? 的相关文章

  • 在 Windows 上为 Bitbucket 设置 SSH 密钥

    首先 我对 git repos 和命令行绝对是菜鸟 我在 Bitbucket 上有仓库 我基本上希望能够通过 gitbash 推送到存储库 而无需每次输入密码 我拥有的 Bitbucket 上的存储库已设置好代码 克隆存储库的本地目录 通过
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 如何在 Mac OS X 10.9 上安装和使用最新的 Git?

    我从 sourceforge 下载了 Git 2 4 3http git scm com download mac http git scm com download mac对于我的 Macbook Pro OS X 10 9 5 然后安装
  • 如何为Git存储库组织和设置镜像备份服务器?

    我正在将一些 svn 存储库移至 Git 所以 我基本上尝试做的是 设置一台带有裸 Git 存储库的服务器 我将从中拉取和推送到该存储库 为第一台服务器上的所有存储库设置一些备份服务器 所以 假设我的服务器上有一个目录 例如 HOME gi
  • 如何使用 python 模块的多个 git 分支?

    我想使用 git 来同时处理我正在编写的模块中的多个功能 我目前正在使用 SVN 只有一个工作区 因此我的 PYTHONPATH 上只有该工作区 我意识到这不太理想 所以我想知道是否有人可以建议一种更 正确 的方法来做到这一点 让我用一个假
  • 是什么让 DVCS 中的合并变得如此简单?

    我读于乔尔谈软件 http www joelonsoftware com items 2010 03 17 html 通过分布式版本控制 分布式部分实际上不是 最有趣的部分 有趣的是 这些 系统根据变化来思考 而不是 就版本而言 and a
  • Git 错误:引用名称“HEAD”不明确

    我对 git 还很陌生 目前 我尝试按照本教程使用分支名称和版本覆盖我的应用程序的图标 http www merowing info 2013 03 overlaying application version on top of your
  • Github 操作 - 错误:进程已完成,退出代码为 1

    我正在尝试设置 github 操作来部署我的应用程序 My bash 启动部署过程的脚本如下所示 bin sh set e vendor bin phpunit git push true git checkout production g
  • git:复制一个版本来玩一下

    在开发应用程序时 我希望在某个时候拥有一份单独的工作副本 以便尝试进行一些更改 这些更改并不意味着要进行 只是玩玩 尝试各种可能性 是什么 best 如何做到这一点 我发现了以下可能性 但想得到比我更有 git 经验的人的建议 我可以用gi
  • 如何设置 Corkscrew 通过 Draconian 代理连接到 Github

    我的公司有一个严酷的代理服务器 它阻止我通过 SSH 删除服务器 从而阻止我使用 github 我花了最后一天的时间在网上查看示例 例如 如何通过严格的代理使用 GitHub https stackoverflow com question
  • GIT 从特定标签拉取/获取

    有没有办法从存储库中的特定标签中提取 获取代码 我知道克隆后 我可以签出标签 但是否可以在拉取期间指定标签 在 ClearCase 中 我可以重新设置或交付特定的代码基线 有没有一种方法可以使用 git 标签 类似于将代码拉 推到指定标签
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • git Push heroku master 因“HTTP 400curl 22 请求的 URL 返回错误”而失败

    我正在尝试推送仅显示 你好 世界 的 Rails 应用程序 然后我遇到了如下错误 我想知道如何解决这个问题 git推送heroku大师枚举对象 88 完成 计数对象 100 88 88 完成 增量压缩最多使用 4 个线程 压缩对象 100
  • Sublime 中的文件内容不会因 Git 分支更改而更改

    如果在 Sublime text 2 中打开一个文件 然后切换到终端中对该文件进行更改的分支 则在通过单击编辑器选择编辑器之前 文件内容不会在 Sublime text 2 中更新 如何自动神奇地改变它 Sublime Text 没有任何内
  • 如何删除所有意外添加到git系统的本地文件

    我是 git 系统的新手 我可能犯了一个错误 将我所有的本地文件集成到 git 系统中 当我说出现以下错误时 我使用 vs代码编辑器 并放弃所有更改 Git fatal You are on a branch yet to be born
  • .gitattributes 没有什么区别,在使用 git difftool 时尝试跳过文件

    我已经阅读了 Git Pro 网站 并且在 StackOverflow 上阅读了多个答案 但遗憾的是我根本无法让 gitattributes 为我工作 每当我使用git difftool 它将尝试显示二进制文件之间的差异 例如图像文件 PN
  • git - 奇怪的分支合并错误,我不知道如何解决

    当我 git status 时 我收到以下错误消息 On branch master Your branch and origin master have diverged and have 1 and 2 different commit
  • 如何摆脱指向origin/master的远程origin/HEAD?

    最近 我在两个不同的复制服务器上更改了我的原始遥控器 现在我在服务器上遇到这种情况 一切正常 git branch a master remotes origin master 在另一台服务器上我有这个 git branch a maste
  • git LFS 如何比 git 更高效地跟踪和存储二进制数据?

    我知道 git LFS 导致 git 在文本文件中存储字符串 指针 然后 git LFS 下载该目标二进制文件 这样 远程 git 服务器上的 git repos 就会更小 但是 git LFS 仍然必须存储二进制文件 所以在我看来 本地存

随机推荐

  • 圆括号还是不圆括号?有什么不同?

    我最近看到这两件事 我有点困惑 var blah new MyClass Name hello and var blah new MyClass Name hello 有什么不同 为什么它们都有效 Update 这是否意味着如果我在构造函数
  • NotificationCompat.Builder 不起作用,Android 2.2.1

    我有下一个代码 NotificationCompat Builder mBuilder new NotificationCompat Builder this setSmallIcon R drawable ic launcher setC
  • 如何在标题文本上制作字段集图例样式的“背景线”?

    我正在尝试将标题文本设置为类似于您的样式默认图例文本 http www w3schools com tags tryit asp filename tryhtml fieldset出现在字段集中 也就是说 我想要一条类似删除线的行到达文本
  • 通过指针传递和通过引用传递[重复]

    这个问题在这里已经有答案了 可能的重复 C 中指针变量和引用变量有什么区别 https stackoverflow com questions 57483 what are the differences between pointer v
  • 如何在 WooCommerce 中获取具有自定义订单状态的立即付款 URL?

    我想获取客户可以直接支付发票费用的 URL 并且它应该与wc cancelled and wc transaction declined 自定义订单状态 我的解决方案我现在正在做的是使用我的自定义获取参数创建一个自定义页面 并将整个付款流程
  • CGAL:带有信息的点的凸包

    我在平面上有一个由 2D 点 N 个元素 组成的向量 我想制作这些点的凸包 之后 我想检索凸包中每个顶点的向量索引 我该怎么做 我知道 通过利用三角测量存在这种可能性vector
  • Linux串口的正确初始化顺序

    我编写了一个必须在 Linux 上使用串行端口的应用程序 尤其是 ttyUSB 端口 读取和写入操作是使用标准的 select read 循环和 write 执行的 它们可能没有任何问题 但初始化代码 或缺少某些部分 会损坏 tty 子系统
  • addEventListener 到除一个元素之外的所有元素

    我正在尝试让自己摆脱 jQuery 我的心在正确的地方 不是吗 并且我很难找到相当于 not 选择器 I have document body addEventListener mousewheel scrollTriggered 我想在除
  • 如何强制 Knit 在所有其他代码块之后评估 \Sexpr

    我正在尝试为动态文档编写摘要 但是我的 Sexpr 通话无法正常工作 本质上我想做的就是以一个摘要开始文档 该摘要具有从生成的 p 值 Sexpr value 其中值是在文档的 下游 确定的 例如 这有效 begin document lt
  • 向 Microsoft Sharepoint API 发出卷曲请求?

    有没有一种简单的方法来使用cURL http curl haxx se docs httpscripting html请求 REST API 访问我的 Sharepoint 帐户上的文件 例如 curl i H Authorization
  • 如何使用可点击对象消除可跨度字符串中的下划线?

    我有一个Spannable Object with a Clickable Object设置为它 当 的时候Spannable String显示在TextView它有蓝色文本和蓝色下划线 向用户表明该文本是可点击的 我的问题是如何防止出现蓝
  • 如果 MS Chart Control 没有数据,我可以显示消息吗?

    如果没有要绘制图表的数据 是否有办法在 MS 图表控件上显示 默认 消息 我有一个图表 其中包含一些控件 允许用户选择各种日期范围 如果在该日期范围内没有要绘制图表的数据 则当前仅显示任何内容 或者至少显示图例和背景 仅此而已 我希望有一条
  • tsc 似乎没有从 tsconfig.json 中选择“排除”选项

    我正在努力让 tsc 获取我的 tsconfig json 文件并编译我的 ts 文件 它遇到了重复错误 我试图通过 tsconfig json 来避免这些错误 I have package json tsconfig json typin
  • minSdk 小于 21 时 Locale.forLanguageTag 的等效项?

    我想使用Locale method forLanguageTag 然而 使用它所需的设备minSdk是21 由于我希望我的应用程序与尽可能多的设备兼容 因此我需要较低 minSdk 的等效项 有人熟悉这种替代方案吗 添加 Apache Co
  • 用Matlab实现图像直方图

    我正在尝试在Matlab中实现 我知道有一个自定义函数可以实现它 灰度图像直方图 到目前为止我已经尝试过 function h histogram matlab imageSource openImage rgb2gray imread i
  • 如何指定R CMD执行目录?

    以前我可以通过以下方式从命令行启动 Rserve R CMD Rserve 在 Ubuntu 上升级到 3 0 2 后 我得到 usr lib R bin Rcmd 62 exec Rserve not found 我尝试过重新安装并手动启
  • 项目 Euler 7 Scala 问题

    我试图使用 scala 2 8 解决 Project Euler 问题 7 我实施的第一个解决方案大约需要 8 秒 def problem 7 Int var num 17 var primes new ArrayBuffer Int pr
  • 使用 Spring Boot、Spring Security 和 React 时发生 CORS 错误

    早上好 这两天我一直在解决这个问题 所以我决定发布一个关于它的问题 基本上我有一个 Spring Boot 项目 它通过 React JS 前端执行基本的 CRUD 操作 一切似乎都工作正常 直到我将 Spring Security 添加到
  • 使用 .NET 进行双向通信以进行通知的方法

    我有一个服务器 客户端项目 我使用 C 进行编码 WCF 作为服务器 我仅限于 HTTP 到目前为止对 wsdualhttpbinding 还没有运气 项目正在公司网络上运行 除了 WCF 双工之外 还有其他方法可以将通知从服务器发送到客户
  • 如何在推送时自动结帐?

    考虑以下情况 我有一个 git 存储库 foo git 其中包含 javascript 项目的代码 在这个存储库中有一个分支生产包含由网络服务器提供的代码状态 该服务器从以下位置获取代码 var www foo 该存储库是该项目的主存储库