Subject: Re: bug#79024: 31.0.50; Multiple working trees support for VC

From: Eli Zaretskii <[email-masked]>
Date: Sat, 26 Jul 2025 10:02:10 +0300

The new VC tests added under this discussion have 2 problems:

. Compiling the test file produces a warning:

  In vc-test--other-working-trees:
  lisp/vc/vc-tests/vc-tests.el:665:28: Warning: Unused lexical variable `tempdir'

. The new test fails for Git:

  Registering (foo)...
  Registering (foo)... done
  Mark set
  Press C-c C-c when you are done editing.
  Enter a change comment.  Type C-c C-c when done
  Checking in foo...
  Test vc-test-git07-other-working-trees backtrace:
    signal(error ("Failed (status 128): git --no-pager commit -F c:/User
    error("Failed (%s): %s" "status 128" "git --no-pager commit -F c:/Us
    vc-do-command("*vc*" 0 "git" ("foo") "--no-pager" "commit" "-F" "c:/
    apply(vc-do-command "*vc*" 0 "git" ("foo") "--no-pager" ("commit" "-
    vc-git-command(nil 0 ("foo") "commit" "-F" "c:/Users/EliZ/AppData/Lo
    apply(vc-git-command nil 0 ("foo") ("commit" "-F" "c:/Users/EliZ/App
    vc-git-checkin(("foo") #("Summary: Testing other working trees\n" 0
    apply(vc-git-checkin (("foo") #("Summary: Testing other working tree
    vc-call-backend(Git checkin ("foo") #("Summary: Testing other workin
    #f(compiled-function (backend rev patch-string files comment) #<byte
    #f(compiled-function (files comment) #<bytecode 0x123ed96d95329748>)
    vc-finish-logentry()
    funcall-interactively(vc-finish-logentry)
    call-interactively(vc-finish-logentry)
    log-edit-done()
    (let (vc-async-checkin) (log-edit-done))
    (save-current-buffer (set-buffer (find-file-noselect tmp-name)) (vc-
    (let* ((first (file-name-as-directory (expand-file-name "first" defa
    (progn (add-hook 'vc-test--cleanup-hook (let ((dir default-directory
    (unwind-protect (progn (add-hook 'vc-test--cleanup-hook (let ((dir d
    (let ((vc-handled-backends (list backend)) (default-directory (file-
    (progn (let ((vc-handled-backends (list backend)) (default-directory
    (unwind-protect (progn (let ((vc-handled-backends (list backend)) (d
    (let* ((coding-system-for-write nil) (temp-file (file-name-as-direct
    vc-test--other-working-trees(Git)
    #f(lambda () :dynbind (let ((value-478 (gensym "ert-form-evaluation-
    #f(compiled-function () #<bytecode 0x6e2b2fad8c7c862>)()
    handler-bind-1(#f(compiled-function () #<bytecode 0x6e2b2fad8c7c862>
    ert--run-test-internal(#s(ert--test-execution-info :test ... :result
    ert-run-test(#s(ert-test :name vc-test-git07-other-working-trees :do
    ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
    ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
    ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
    ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
    eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
    command-line-1(("-L" ";." "-l" "ert" "--eval" "(setq treesit-extra-l
    command-line()
    normal-top-level()
  Test vc-test-git07-other-working-trees condition:
      (error
       "Failed (status 128): git --no-pager commit -F c:/Users/EliZ/AppData/Local/Temp/git-msg5fr19l --only -- foo")
     FAILED  24/56  vc-test-git07-other-working-trees (0.337804 sec) at lisp/vc/vc-tests/vc-tests.el:1

Is the new feature supposed to work on MS-Windows, where committing
specifies the message through a temporary file, rather than the
command line?

(The vc-test-hg07-other-working-trees test is skipped, perhaps the
version of Mercurial I have here is 4.7.1 or maybe "share" is an
add-on one should install and I didn't.)