我希望在我提交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页面,一个写入我使用的commit-msg)对于主提交到文件中)每当我在master
上执行提交时,它至少允许我通过为commit -n
执行--no-verify
来轻松跳过它,而使用post-commit
{1}} hook我必须取消挂钩文件上的exec标志才能暂时禁用它。
这有用吗?我想我应该尝试一下。但Git会怎么做?只要我的bash脚本发出返回值0,它就会继续执行提交?
答案 0 :(得分:0)
如果这不起作用,你的钩子的解决方案是在另一个本地仓库(已经签出到gh-pages
)中使用--git-dir
和{{1}执行相同的命令你的git命令的选项(为了引用其他repo)。
然后在你的仓库中取回那个分支(仍然在同一个钩子里)。
2016年8月更新: Simpler GitHub Pages publishing 现在允许将您的网页文件保存在相同分支的子文件夹中(不再需要--work-tree
) :
因此,您现在可以直接更新同一分支中的子文件夹内容。
答案 1 :(得分:0)
承诺不是大问题。您不能真正使用git commit
本身,但您可以使用管道命令创建提交(允许您使用单独的索引文件将提交添加到另一个分支而不实际触及工作树)。更大的问题是合并,因为它可能会失败并使树处于需要手动干预的状态。