1

我想在提交的任何时候将提交哈希的前几个字符和提交消息自动插入到gh-pages分支中的文件中master

目前使用这个post-commit钩子:

#!/bin/bash
#Ensures we are in master branch
[ `git rev-parse --abbrev-ref HEAD` != "master" ] && exit 1
git checkout gh-pages
git merge master
# update the js file with commit identification information from git
# I can't seem to get this to work without generating a *_bak file. Whatever.
# I have a section in my source that has delimiters #% %# that I use to stuff the
# git commit into, so I can view the version of source I am testing on my device
# very easily (you can't imagine how much more definite and efficient this is compared
# to what we do at my work)
sed -i _bak "s/#%.*%#/#% `git log master -1 --format="%h %s"` %#/" source.js
git commit -a -m"this commit made by a script"
git checkout master

我怀疑将其转换为commit-msg钩子可以让我减少生成的额外提交的数量(两个,一个将 master 合并到 gh-pages 中,一个将我用于 master 提交的 commit-msg 写入文件)每当我在 上执行提交时master,它至少可以让我通过执行commit -nfor轻松跳过它--no-verify,而使用post-commit钩子我必须取消设置钩子文件上的 exec 标志以暂时禁用它。

这行得通吗?我想我应该试试看。不过,Git 会做什么呢?只要我的 bash 脚本发出 0 的返回值,它就会继续执行提交?

4

2 回答 2

0

如果这不起作用,则您的钩子的解决方案是在不同的本地存储库中执行相同的命令(已签出到gh-pages),并为您的 git 命令提供--git-dir--work-tree选项(以引用其他存储库)。

然后在你的仓库中取回那个分支(仍然在同一个钩子中)。


2016 年 8 月更新:更简单的 GitHub 页面发布现在允许将页面文件保存在同一分支的子文件夹中(不再gh-pages需要):

现在您可以在存储库设置中选择一个源,GitHub Pages 将在那里查找您的内容。

因此,您现在可以简单地更新同一分支中的子文件夹内容。

于 2013-01-11T07:14:59.613 回答
0

提交不是大问题。您不能真正使用git commit自己,但您可以使用管道命令创建提交(允许您使用单独的索引文件将提交添加到另一个分支,而无需实际接触工作树)。更大的问题是合并,因为它可能会失败并使树处于需要手动干预的状态。

于 2013-01-11T09:21:44.963 回答