* .dir-locals.el (diff-add-log-use-relative-names): Move to `diff-mode`.
* lisp/vc/vc-git.el: Don't require `diff-mode`.
(vc-git-region-history-mode-map): Don't set the keymap parent yet.
(vc-git-region-history-font-lock): Declare `diff-font-lock-keywords` to
silence the compiler warning.
(vc-git-region-history-mode): Require `diff-mode` and set the keymap
parent here.
* lisp/vc/vc.el (vc-log-view-type): Replace with ...
(vc-log-view-types): ... this. All uses changes.
(vc-log-remote-unintegrated): Newly pass a value for the log
view types. This matters for Hg repositories.
(vc-print-log-internal): Ensure log view types always contains
either 'long' or 'short'.
(vc-root-log-incoming, vc-root-log-outgoing, vc-log-search):
* lisp/vc/vc-dir.el (vc-dir--count-outgoing): Pass both
log-incoming/log-outgoing/log-search and short/long for the log
view types. This is necessary because these functions don't
call vc-print-log-internal. This will need to be refactored
when implementing the new fileset-specific vc-log-incoming and
vc-log-outgoing.
* lisp/vc/vc-bzr.el (vc-bzr-dir-status-files):
* lisp/vc/vc-cvs.el (vc-cvs-dir-status-files):
* lisp/vc/vc-git.el (vc-git-dir-status-goto-stage):
* lisp/vc/vc-hg.el (vc-hg-dir-status-files):
* lisp/vc/vc-svn.el (vc-svn-dir-status-files): Set the
query-on-exit flag for the processes populating VC-Dir buffers
to nil.
* doc/emacs/vc1-xtra.texi (Outstanding Changes): Rename node
from this ...
(Unintegrated Changes): ... to this (bug#80434). References
changed.
* etc/NEWS: Document the change.
* lisp/vc/vc-git.el (vc-git-topic-outgoing-base)
(vc-git-log-view-mode):
* lisp/vc/vc-hg.el (vc-hg-print-log, vc-hg-log-view-mode):
* lisp/vc/vc.el (vc-root-diff-outstanding, vc-diff-outstanding)
(vc-log-outstanding, vc-root-log-outstanding):
Rename from these ...
(vc-root-diff-unintegrated, vc-diff-unintegrated)
(vc-log-unintegrated, vc-root-log-unintegrated):
... to these (bug#80434). All uses changed.
(vc-log-view-type): Rename 'log-outstanding' type to
'log-unintegrated'. All uses changed.
This fixes vc-hg-print-log's choice of -r arguments to 'hg log'.
* lisp/vc/vc.el (vc-log-view-type): New 'log-outstanding' value.
(vc-log-outstanding): Pass it.
* lisp/vc/vc-git.el (vc-git-log-view-mode):
* lisp/vc/vc-hg.el (vc-hg-print-log, vc-hg-log-view-mode): Treat
'log-outstanding' the same as 'log-outgoing'.
* lisp/vc/vc-git.el (vc-git--checkin): Check that patch-string
is not empty before applying it. This prevents an error when
the patch exactly matches the index (bug#80228).
* test/lisp/vc/vc-git-tests.el
(vc-git-test-checkin-patch-staged-diff): New test.
* lisp/vc/vc-dir.el (vc-dir-fileinfo): New 'display-state'
field.
(vc-dir-update): Use it.
(vc-default-dir-printer):
* lisp/vc/vc-git.el (vc-git-dir-printer): Use it. Fontify a
display state of "committing" as vc-dir-status-warning.
* lisp/vc/vc-hooks.el (vc--file-getinheprop): New function.
* lisp/vc/vc.el (vc-checkin): Set "committing" display state on
items we are checking in asynchronously.
* lisp/vc/vc-hg.el (vc-hg--bookmarks): New function.
(vc-hg-trunk-or-topic-p):
* lisp/vc/vc-git.el (vc-git--branch-remotes)
(vc-git-trunk-or-topic-p): New optional BRANCH argument.
(vc-trunk-or-topic-p): Declare.
(vc-git-topic-outgoing-base): Consider only local trunks, if
there are any (bug#80006).
* lisp/vc/vc.el (trunk-or-topic-p): New optional BRANCH
argument.
(vc-trunk-or-topic-p): New function.
(vc--outgoing-base): Call it.
* lisp/vc/vc-dispatcher.el (vc-user-edit-command-history): Use
this as a dynamically bound variable, not a minibuffer history.
(vc-user-edit-command): Pass its value to read-shell-command.
* lisp/vc/vc-git.el (vc-git--pushpull):
* lisp/vc/vc.el (vc-edit-next-command): Bind it.
(vc-edit-next-command-history): New variable.
* etc/NEWS: Document the change.
* lisp/vc/diff-mode.el (diff--revert-kill-hunks): New workhorse
routine.
(diff-hunk-kill, diff-revert-and-kill-hunk): Call it.
(diff-hunk-kill): New BEG and END parameters and interactive
form.
* doc/emacs/files.texi (Diff Mode):
* etc/NEWS: Document the change.
* lisp/vc/vc-git.el (vc-git--branch-remotes): New function.
(vc-git-trunk-or-topic-p): Use it.
* test/lisp/vc/vc-git-tests.el (vc-git-test-branch-remotes): New
test.
When using vc-exec-after to parse program output, check that the
program didn't die to a signal or exit with an error exit code
before attempting the parse. Continue to use plain
vc-run-delayed where we aren't parsing output, because in these
cases it doesn't matter to CODE if the output is incomplete.
* lisp/vc/vc-dispatcher.el (vc-exec-after): <process-status>:
Treat PROC dying to a signal the same as PROC exiting non-zero.
(vc-exec-after): <accept-process-output>: Restore making a
nonblocking call, for the case of vc-exec-after called from a
process sentinel. diff-hl *does* require this.
(vc-exec-after): <OKSTATUS>: New parameter, replacing SUCCESS,
which never worked as documented.
* test/lisp/vc/vc-tests/vc-test-misc.el (vc-test-exec-after-3):
Test it.
(vc-run-delayed-success): New macro.
* lisp/vc/vc-git.el (vc-git-dir-status-goto-stage):
* lisp/vc/vc-hg.el (vc-hg-dir-status-files):
* lisp/vc/vc.el (vc-pull-and-push): Use it.
* lisp/obsolete/vc-arch.el (vc-exec-after):
* lisp/obsolete/vc-mtn.el (vc-exec-after):
* lisp/vc/vc-bzr.el (vc-exec-after):
* lisp/vc/vc-cvs.el (vc-exec-after):
* lisp/vc/vc-git.el (vc-exec-after):
* lisp/vc/vc-hg.el (vc-exec-after):
* lisp/vc/vc-svn.el (vc-exec-after): Update declarations.
* lisp/vc/vc-git.el (vc-git--file-list-is-rootdir):
Merge into vc-git-command.
(vc-git-command): When operating on the repository root, first
bind default-directory to that root. When operating on the
repository root with 'git checkout', pass "." as FILE-OR-LIST.
* lisp/vc/vc-git.el (vc-git--assert-revision-on-branch): New
function, factored out.
(vc-git-revision-published-p): Use it.
(vc-git-delete-revision):
* lisp/vc/vc-hg.el (vc-hg-delete-revision): New functions.
* lisp/vc/vc.el: Specify delete-revision backend API function
(bug#79408).
* lisp/vc/vc-git.el (vc-git-revision-published-p): New function.
(vc-git--assert-allowed-rewrite): Use it.
* lisp/vc/vc-hg.el (vc-hg-revision-published-p): New function.
* lisp/vc/vc.el: Specify revision-published-p backend API
function (bug#79408).
Using an empty string to mean the location from which vc-update
would pull was inherited from the old incoming/outgoing
functions, but we have opportunity to simplify things for this
new one.
* lisp/vc/vc-bzr.el (vc-bzr-incoming-revision):
* lisp/vc/vc-git.el (vc-git-incoming-revision):
* lisp/vc/vc-hg.el (vc-hg-incoming-revision):
* lisp/vc/vc.el (vc-diff-incoming, vc-diff-outgoing)
(vc-diff-outgoing-base, vc--incoming-revision): Make
UPSTREAM-LOCATION parameter optional. Use nil, rather than an
empty string, to mean the default.
* lisp/vc/vc-hg.el (vc-hg-diff): When OLDVERS is ".", behave the
same as if OLDVERS was the actual working revision.
(vc-hg-previous-revision): Return ".~1" for input ".", ".~3" for
input ".^^" et cetera.
Also, when passed non-symbolic revisions, use "REV~1" instead of
"REV^" for MS-Windows compatibility.
(vc-hg-working-revision-symbol):
* lisp/vc/vc-git.el (vc-git-working-revision-symbol):
* lisp/vc/vc-hooks.el (vc-symbolic-working-revision): New
functions.
(vc-default-mode-line-string):
* lisp/vc/ediff-vers.el (ediff-vc-merge-internal):
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--checkin-patch):
* lisp/vc/vc.el (vc-diff-build-argument-list-internal)
(vc-diff-outgoing, vc-revision-other-window, vc-default-revert):
Call vc-symbolic-working-revision.
(vc-buffer-revision): Specify that this should always be a
revision number/hash, not a symbolic name.
* lisp/vc/vc-git.el (vc-git-previous-revision): Return "HEAD~1"
for input "HEAD", "HEAD~3" for input "HEAD^^" et cetera.
* lisp/vc/vc.el (prepare-patch): Specify :patch-start and
:patch-end plist entries.
* lisp/vc/vc-git.el (vc-git-prepare-patch): Use -n1 to avoid
passing a revision range to git-format-patch, which is a bit
simpler. Catch search-failed errors and signal an error with a
more helpful message. Properly handle Subject: header by
looking for continuation lines. Return :patch-start and
:patch-end entries in the plist.
* lisp/vc/vc-hg.el (vc-hg-prepare-patch): Always pass --git to
'hg export' for consistency. Catch search-failed errors and
signal an error with a more helpful message. Return a
:patch-start entry in the plist.
This is expected to happen in some cases.
* lisp/vc/vc-git.el (vc-git--with-apply-temp): New OKSTATUS
parameter.
(vc-git--checkin): Use it to ignore 'git apply --3way' exiting
1.
* lisp/vc/vc-git.el
(vc-git--with-apply-temp-to-staging): Rename ...
(vc-git--with-apply-temp): ... to this. New ARGS parameter.
All uses changes.
(vc-git--checkin): In POST function, apply PATCH-STRING to the
working tree with 'git apply --3way --ours'.
* lisp/vc/vc-hg.el (vc-hg--checkin): Document what the call to
'hg update' is for.
* test/lisp/vc/vc-tests/vc-tests.el (vc-test--checkin-patch):
Delete completed FIXME and workaround.
* lisp/vc/vc-git.el (vc-git--checkin): Restore dropping stash of
staged changes after applying it. This was accidentally lost
when factoring out vc-git--with-apply-temp-to-staging.
* lisp/vc/vc-git.el (vc-git--mailinfo): New function.
(vc-git-checkin-patch): Use it to extract authorship, date and
log message information from patches.
(vc-git--call): New INFILE argument. All uses changed.
* lisp/vc/vc-hg.el (vc-hg--checkin): When COMMENT is nil, take
authorship, date and log message information from the patch.
* lisp/vc/vc.el (checkin-patch): Specify to use authorship, date
and comment information in PATCH-STRING (bug#79408).
(prepare-patch): Specify that patch should include authorship
identity, date and log message information for REV if supported.
(diff-bounds-of-hunk): Declare.
(vc-default-checkin-patch): Warn if it looks like we will ignore
patch authorship information.
* test/lisp/vc/vc-tests/vc-tests.el (vc-hg-command)
(vc-git--out-str): Declare.
(vc-test--checkin-patch): New function.
(vc-test-git08-checkin-patch, vc-test-hg08-checkin-patch): New
tests.