这是一个非常简单和愚蠢的问题,

我正在处理 2 个任务并修改了代码中的 2 组文件。

现在,当我输入“hg ci”时,它会检查所有文件。我可以从 checkin 中删除某些文件,即只检查一项任务吗?

如果我删除“ checkin 消息”中的文件,它们会从 checkin 中删除

感谢所有的答案

这似乎是一个很大的缺陷,我的用例非常简单和通用。大部分时间开发人员都在处理各种任务,有些准备好了,有些还没有,错误修复等。

现在唯一的简单解决方案似乎是多个本地存储库或克隆

最佳答案

这对于开箱即用的 mercurial 是不可能的。正如所建议的,有几种方法可以选择要提交的文件。要通过提交消息模板获得此功能,您需要一个扩展或包装提交命令的 shell 脚本。这是一种方法:

[alias]
ci = ! hg-partial-commit

Mercurial 部分提交:
#!/bin/sh
# partial commit

edit=$(mktemp ${TMPDIR:-/tmp}/$(basename $0).XXXXXXXXXXXX)
filelist=$(mktemp ${TMPDIR:-/tmp}/$(basename $0).XXXXXXXXXXXX)
logmessage=$(mktemp ${TMPDIR:-/tmp}/$(basename $0).XXXXXXXXXXXX)
cleanup="rm -f '$edit' '$filelist' '$logmessage'"
trap "$cleanup" 0 1 2 3 15

(
    echo user: $(hg debugconfig ui.username)
    echo branch: $(hg branch)
    hg parents --template 'parent: {rev}:{node|short}  {author}  {date|isodate}\n'
    echo
    echo 'Enter commit message.  Select files to commit by deleting lines:'
    hg status 'set:not unknown()' | sed -e 's/^/@/'
) | sed -e 's/^/HG: /' >"$edit"

${VISUAL:-${EDITOR:-vi}} "$edit"
egrep -v '^HG:' "$edit" >"$logmessage"
egrep '^HG: @' "$edit" | cut -c8- >"$filelist"

hg commit -l "$logmessage" "listfile:$filelist"
$cleanup

关于version-control - mercurial hg 部分 checkin ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16968953/

10-14 05:07