修改 Fossil 中的提交
Posted
技术标签:
【中文标题】修改 Fossil 中的提交【英文标题】:amend commit in Fossil 【发布时间】:2017-05-05 17:49:29 【问题描述】:在 Git 中,更改当前分支上的最新提交
一个使用--amend
选项到git-commit
。
Fossil 中最接近的操作是什么?有没有
一种将 GPG 签名添加到未签名提交 (git commit --amend -S
) 的方法?
【问题讨论】:
【参考方案1】:在化石中,没有办法修改提交。如“Deleting content from Fossil” 中所述,
Fossil 旨在永久保存所有历史内容。
但是,如果需要,您可以回滚提交并使用适当的 GPG 签名重做。
【讨论】:
他们的立场在某种程度上是有道理的,但它会使简单的操作变得复杂,例如改进提交消息或添加签核行。这是我习惯使用--amend
的目的:润色元数据,而不是提交内容。【参考方案2】:
有一种在 Fossil 中修改提交的方法,就像在 git 中一样。事实上,机制是相同的,但过程(以及剩下的数据)不同。
这两个工具都会创建一个新的提交(git 不会像化石一样修改原始文件),不同之处仅在于原始提交会发生什么。
在 git 中,旧的提交会一直悬空,直到最终永久删除(除非被标记)。
在化石中,它被放置在一个隐藏的分支上并永久保存(但如果需要,您仍然可以查看它)。
git amend
的过程是:你先进行更改,然后更新 repo 数据库。在化石中,反过来——也可以在 git 中完成,如下所示。
化石(步骤 1 来自:https://fossil-scm.org/fossil/doc/trunk/www/shunning.wiki):
$ # 1.
$ fossil amend abcd1234 --branch oops --hide
$ fossil up trunk
$ # 2.
$ fossil revert -r abcd1234
$ # 3.
$ $EDITOR the.file
$ fossil commit -m 'my new msg with amended code'
混帐:
$ # 1.
$ git reset --hard HEAD^
$ # 2.
$ git checkout abcd1234 .
$ # 3.
$ $EDITOR the.file
$ git commit -am 'my new msg with amended code'
在第 2 步中,git 仍然知道旧的提交,因为它还没有被 gc'd - 你可以在 reflog 中看到它。
git amend
只是走捷径,但对数据的操作是一样的。
【讨论】:
【参考方案3】:fossil amend 也可以只更新提交信息:
fossil amend COMMIT_ID -m 'my new commit message'
或
fossil amend COMMIT_ID -e # launch $EDITOR to revise message
(这些添加了一个带有新/修订消息的控制工件,Fossil 将显示该消息而不是原始消息。)
它还有其他功能:https://fossil-scm.org/fossil/help?cmd=amend
向提交添加签核的一种可能方法是:
fossil amend COMMIT_D --tag sign-off=my_name
您可以通过打开清单设置、签出该提交、生成 PGP/GPG 签名,然后将 PGP/GPG 签名添加到未签名的提交中
fossil amend COMMIT_ID --tag signature=SIGNATURE
当然,这比直接支持添加签名的修改要难。
【讨论】:
以上是关于修改 Fossil 中的提交的主要内容,如果未能解决你的问题,请参考以下文章
从 Fossil TH1 发布工单更新/提交到 Webhook