首页 > 解决方案 > 与通常的手动提交并行,将自动 git 提交创建到仅为他们创建的分支中

问题描述

除了我在项目中进行的常规手动 git 提交之外,我还想开始添加自动提交,例如每 30 分钟一次。

这些自动提交应该与正常提交明显分开。我在考虑两种方法:

第一种方法很简单,但我想测试第二种方法是否不是更好的选择,但我不知道该怎么做。

我怎样才能一步一步地提交到那个“自动”分支,然后确保如果我创建一个手动提交,它的行为就像一个正常的提交,就好像那个“自动”分支不存在一样。

甚至应该使手动提交不仅包含上次自动提交之间的差异,还包含自上次手动提交以来的全部更改。

自动提交应该只包含自上次提交以来的更改,无论是手动提交还是自动提交(但如果忽略最后一次手动提交也可以)。

只有在自上次提交后进行了更改时才应创建自动提交,无论是手动提交还是自动提交。

还是第二种方法不好,以至于我什至不应该考虑它?我可能会使用 Python 来dulwich实现这种自动化。

标签: gitautomation

解决方案


您可以使用边带索引并直接构建提交,(手指到文本框警告......)

#!/bin/sh
base=`git rev-parse 2>&- timed-commits || git rev-parse @`
GIT_INDEX_FILE=`git rev-parse --git-dir`/timed-index || { echo couldn\'t get git dir; exit; }
export GIT_INDEX_FILE
while sleep $((30*60)); do
        git add .
        git update-ref -m 'automatic timed commit' refs/heads/timed-commits $(
                git commit-tree -p $base -m 'timed commit' `git write-tree`
        )
done & 

git add .添加在您运行它的任何工作树中未被忽略的所有内容。要仅添加已跟踪的内容,请切换到git add -a.


推荐阅读