- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我编写了一个非常简单的“部署”脚本,作为我的裸 git 存储库中的 post-update
Hook 运行。
变量如下
live domain = ~/mydomain.com
staging domain = ~/stage.mydomain.com
git repo location = ~/git.mydomain.com/thisrepo.git (bare)
core = ~/git.mydomain.com/thisrepo.git
core == added remote into each live & stage gits
live
和 stage
都初始化了 git repos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为 core
) 以便 git pull core stage
或 git pull core live
将从 的相应
repo 。branch
pull 更新的文件>核心
脚本如下:
#!/usr/bin/env ruby
# Loop over each passed in argument
ARGV.each do |branch|
# If it matches the stage then 'update' the staging files
if branch == "refs/heads/stage"
puts ""
puts "Looks like the staging branch was updated."
puts "Running a tree checkout now…"
puts ""
`cd ~/stage.mydomain.com`
`unset GIT_DIR` # <= breaks!
`git pull core stage`
puts ""
puts "Tree pull completed on staging branch."
puts ""
# If it's a live site update, update those files
elsif branch == "refs/heads/live"
puts ""
puts "Looks like the live branch was updated."
puts "Running a tree checkout now…"
puts ""
`cd ~/mydomain.com`
`unset GIT_DIR` # <= breaks!
`git pull core live`
puts ""
puts "Tree checkout completed on live branch."
puts ""
end
end
我尝试调整来自 this bash script here 的文件的“更新”例如,它使用 unset GIT_DIR
来运行下一个 git 命令 git pull core stage
。 core
是服务器上不同文件夹中我的 bare
存储库添加的 remote
。
但是,当执行上面的脚本时,出现以下错误:
remote: hooks/post-update:35: command not found: unset GIT_DIR
remote: fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
有什么方法可以在我的 ruby 脚本中的 bash 脚本中执行与 unset GIT_DIR
相同的操作吗?
非常感谢,
詹尼斯
最佳答案
这看起来像
`cd ~/stage.mydomain.com && unset GIT_DIR && git pull core stage`
可以胜任。
推测原因(推测是因为我不熟悉 ruby):您在与运行 git pull
的不同的 shell 中运行 unset
命令(正如 samold 在他的回答中指出的那样,当前工作目录也会发生同样的问题。
这表明可能有一些 ruby API 可以操纵 ruby 传递给它使用反引号运算符启动的 shell 的环境,并且还可以更改当前工作目录。
关于ruby - 混帐 & ruby : How can I unset the GIT_DIR variable from inside a ruby script?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526532/
我过去错误地分支,一个提交留在了另一个分支的开头: * 03431cb (HEAD -> bar) a2 | * d332e4d (foo) b2 | * 9b29ae3 b1 | * 4656a98
我是 git 的新用户,在广泛使用 svn 之后,我仍然有几件事情不清楚。 这是我的问题: 我在 xp dev 上有 repo:ssh://xp-dev.com/my_repo_name 它包含两个分
我有一个 Drupal 多站点并将其克隆到本地进行设置。我已经更改了一些用于数据库访问的设置文件。当我执行 GIT 状态时,我得到... Changes to be committed: (us
我们的团队有三名后端开发人员和两名前端开发人员。我们使用 Git 作为版本控制系统,使用 Jira 来跟踪问题和项目,使用 Stash 作为 Git 存储库。最后,我们使用 SourceTree(使用
我(主要)使用 git 从他们的源代码下载和编译各种项目,将我的源代码保存在 /usr/local/src 并将二进制文件安装在 /usr/local/bin. 在构建过程之后,通常使用 ./conf
这是我所做的: 创建文件夹testA 创建一个文件“a.txt”,内容为“a” Git 初始化到文件夹 testA git 添加。 git commit -a -m "第一个" 将文件的“a.txt”
我现在有一个巨大的、臃肿的 Git 存储库,它占用了 GitHub 上的大量磁盘空间,我想节食。我需要丢弃在项目历史早期做出的古老提交,这些提交基本上与项目当前的发展方向无关。 我是 - 并且永远是
我的同事不久前做了一个改变——引入了一个新功能——并且(成功地)提交给了 Git。不过,现在该功能已丢失。 使用 git log --reverse 我设法找到了该函数仍在代码中的最后一次提交 (48
在我部署了 laravel 应用程序的 digitalocean droplet 上一切正常,今天当我尝试执行“git pull”时,我刚刚收到: root@ubuntu-s-1vcpu-2gb-ny
我们有一个共同的 LDAP 帐户/用户。我们计划使用此用户为我们的团队配置 Jenkins。 我使用我的登录名登录到机器/虚拟机并安装了 Jenkins。 然后我只从我的帐户生成 ssh key ,但
我目前正在尝试关注 Pro Git 书中提到的基于小型项目的工作组:http://progit.org/book/ch5-2.html 所以,这是我的设置: [Live Website Folder]
我想知道我的分支是否与远程同步: git pull -v From ... = [up to date] master -> origin/master = [up to dat
我刚刚创建了名为 website 的目录。这有几个图像、index.html 页面等。我运行了:git --bare init --shared=0777 现在,它成功地创建了一个空的共享仓库。 我现
我在我的 cmd 中运行 git 命令。它在前一段时间工作,但现在每当我使用 git 命令时,都会发生以下错误 fatal: unable to access 'github.com/user_nam
我在我的桌面上创建了一个存储库并推送到 github,然后将该存储库克隆到我的笔记本电脑上进行开发,然后提交更改并推送到 github。现在回到我的桌面,我尝试“git pull”来获取我所做的所有更
我有一个带 HTTPS 访问权限的远程存储库。 git status 只列出一个条目:master git remote -v 列出同一地址的两个条目:一个用于获取,一个用于推送 但是当我执行 git
我有应用服务器,我使用 Chef + 一些临时 bash 脚本一起引导它们。问题是,当我想在这些应用程序服务器之一上运行更新时,我得到: 19:00:28: *** Please tell me wh
我正在尝试在服务器上安装 git,但在尝试执行第一次推送时遇到了一些问题。我在服务器上成功安装了 git,在本地和服务器上创建了存储库,但是当我尝试进行第一次推送时,我收到了这条消息: stdin:
每当我从我的 Remote 中 pull 出时,我都会收到以下关于压缩的错误。当我运行手动压缩时,我得到了相同的结果: $ git gc error: Could not read 381378312
我的 git 存储库发生了一件奇怪的事情。当我尝试在 tortoisegit 窗口中提交某些内容时,我收到了来自项目的所有文件。我无法还原它们,当我从服务器 pull 出时收到 fatal: No s
我是一名优秀的程序员,十分优秀!