Please describe the problem.

On my Windows laptop I upgraded to git 2.34 via Scoop and after that two conflict resolution unit tests started to fail. Presumably this is due to the new ort merge strategy that has been made default in this new release of git. (Ostensibly Recursive's Twin isn't perhaps quite yet what it claims to be.)

What steps will reproduce the problem?

Install git version 2.34.0.windows.1. Then optionally build your git-annex with stack setup && stack build if you don't have a binary already. Then copy the binary to C:\annxtmp1 and while situated in said directory in (Git) Bash say: ./git-annex test -p 'conflict resolution ' 2>&1 | tee git-annex..specific-test-01.LOG~202 Observe two out of nine tests failing.

test -p QuickCheck was fine as were the other v8 unit tests.

What version of git-annex are you using? On what operating system?

Two versions definitely exhibited this issue: 8.20211029-g9d3ce224e and 8.20211117-gc3af94eff (=released version). git-annex version output of the former below:

git-annex version: 8.20211029-g9d3ce224e
build flags: Assistant Webapp Pairing TorrentParser Feeds Testsuite S3 WebDAV
dependency versions: aws-0.22 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.0 ghc-8.10.7 http-client-0.7.9 persistent-sqlite-2.13.0.3 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.1.2
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
operating system: mingw32 x86_64
supported repository versions: 8
upgrade supported from repository versions: 2 3 4 5 6 7

Windows version 21H1 (build 19043.1348), 64 bit.

Please provide any additional information below.

Under Windows with 8.20211029-g9d3ce224e:

jkniiv@AINESIS MINGW64 /c/annxtmp1
$ ./git-annex test -p 'conflict resolution ' 2>&1 | tee git-annex..specific-test-01.LOG~201
[...]
jkniiv@AINESIS MINGW64 /c/annxtmp1
$ cat git-annex..specific-test-01.LOG~201
Tests
  Unit Tests v8 adjusted unlocked branch
    conflict resolution (adjusted branch):                Init Tests
  init: OK (5.64s)
  add:  OK (7.85s)

All 2 tests passed (13.49s)
OK (46.59s)
    conflict resolution movein regression:                OK (51.06s)
    conflict resolution (mixed directory and file):       FAIL (37.66s)
      Test.hs:1378:
      r1 conflictor variant file missing in: ["sha1foo","foo","conflictor~HEAD.variant-cc12","conflictor","bar.c",".git","..","."]
      Use -p '/conflict resolution /&&/conflict resolution (mixed directory and file)/' to rerun this test only.
    conflict resolution symlink bit:                      OK
    conflict resolution (uncommitted local file):         OK (53.99s)
    conflict resolution (removed file):                   OK (106.99s)
    conflict resolution (nonannexed file):                FAIL (26.74s)
      .\\Test\\Framework.hs:57:
      sync failed (transcript follows)
      commit
      On branch adjusted/master(unlocked)
      nothing to commit, working tree clean
      ok
      pull r2
      (Merging into master...)
      CONFLICT (distinct types): conflictor had different types on each side; renamed one of them so each can be recorded somewhere.
      Automatic merge failed; fix conflicts and then commit the result.
      (recording state in git...)

        Merge conflict was automatically resolved; you may want to examine the result.
      U conflictor~refs_remotes_r2_master
      (Merging into master...)
      CONFLICT (distinct types): conflictor had different types on each side; renamed one of them so each can be recorded somewhere.
      Automatic merge failed; fix conflicts and then commit the result.
      (recording state in git...)

        Merge conflict was automatically resolved; you may want to examine the result.
      U conflictor~refs_remotes_r2_synced_master
      failed
      (merging r2/git-annex into git-annex...)
      (recording state in git...)
      push r2

      failed
      From ../../.t\tmprepo15
       * [new branch]      adjusted/master(unlocked) -> r2/adjusted/master(unlocked)
       * [new branch]      git-annex                 -> r2/git-annex
       * [new branch]      master                    -> r2/master
       * [new branch]      synced/master             -> r2/synced/master
      error: Committing is not possible because you have unmerged files.
      hint: Fix them up in the work tree, and then use 'git add/rm <file>'
      hint: as appropriate to mark resolution and make a commit.
      fatal: Exiting because of an unresolved conflict.
      error: Committing is not possible because you have unmerged files.
      hint: Fix them up in the work tree, and then use 'git add/rm <file>'
      hint: as appropriate to mark resolution and make a commit.
      fatal: Exiting because of an unresolved conflict.
      To ../../.t\tmprepo15
       * [new branch]      git-annex -> synced/git-annex
       ! [rejected]        master -> synced/master (non-fast-forward)
      error: failed to push some refs to '../../.t\tmprepo15'
      hint: Updates were rejected because a pushed branch tip is behind its remote
      hint: counterpart. Check out this branch and integrate the remote changes
      hint: (e.g. 'git pull ...') before pushing again.
      hint: See the 'Note about fast-forwards' in 'git push --help' for details.
      To ../../.t\tmprepo15
       ! [rejected]        master -> master (non-fast-forward)
      error: failed to push some refs to '../../.t\tmprepo15'
      hint: Updates were rejected because a pushed branch tip is behind its remote
      hint: counterpart. Check out this branch and integrate the remote changes
      hint: (e.g. 'git pull ...') before pushing again.
      hint: See the 'Note about fast-forwards' in 'git push --help' for details.
        Pushing to r2 failed.
      sync: 2 failed

      Use -p '/conflict resolution /&&/conflict resolution (nonannexed file)/' to rerun this test only.
    conflict resolution (nonannexed symlink):             OK (22.07s)
    conflict resolution (mixed locked and unlocked file): OK (41.50s)

2 out of 9 tests failed (400.13s)
  (Failures above could be due to a bug in git-annex, or an incompatibility
   with utilities, such as git, installed on this system.)

# End of transcript or log.

Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)

Yeah sure, I'm a believer. :) Using it with my multigigabyte backup files just fine most of the time. I'm also building select versions of git-annex for both Windows native and WSL1/2 use following the development on master. A fine piece of software it definitely is.

fixed --Joey