### Please describe the problem. For a file which I add directly under git (using git -c annex.largefiles='exclude=analysis' annex add * ) upon proxied commit annex renames it with suffix .variant-local. ### What steps will reproduce the problem? see transcript below here you could find original demo script http://www.onerussian.com/tmp/demo-script.sh which was intended to do such commits in a loop but ended up growing a swarm of those *-local files. ### What version of git-annex are you using? On what operating system? debian sid 5.20150710-2 ### Please provide any additional information below. [[!format sh """ # If you can, paste a complete transcript of the problem occurring here. # If the problem is with the git-annex assistant, paste in .git/annex/daemon.log hopa:/tmp/demo1 $> git init; git annex init; git annex direct; git annex version Initialized empty Git repository in /tmp/demo1/.git/ init ok (recording state in git...) commit On branch master Initial commit nothing to commit ok direct ok git-annex version: 5.20150710-2 build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external local repository version: 5 supported repository version: 5 upgrade supported from repository versions: 0 1 2 4 2 22762.....................................:Tue 28 Jul 2015 05:19:53 PM EDT:. hopa:/tmp/demo1 $> echo 'echo 999' >> analysis zsh: no such file or directory: analysis 2 22763 ->1.....................................:Tue 28 Jul 2015 05:20:05 PM EDT:. hopa:/tmp/demo1 $> echo 'echo 999' >| analysis 2 22764.....................................:Tue 28 Jul 2015 05:20:11 PM EDT:. hopa:/tmp/demo1 $> git -c annex.largefiles='exclude=analysis' annex add * add analysis (non-large file; adding content to git repository) ok (recording state in git...) 2 22765.....................................:Tue 28 Jul 2015 05:20:18 PM EDT:. hopa:/tmp/demo1 $> ls analysis 2 22766.....................................:Tue 28 Jul 2015 05:20:24 PM EDT:. hopa:/tmp/demo1 $> git annex proxy -- git commit -m "analysis 1" ok [annex/direct/master (root-commit) 56e3ee4] analysis 1 1 file changed, 1 insertion(+) create mode 100644 analysis 2 22767.....................................:Tue 28 Jul 2015 05:20:29 PM EDT:. hopa:/tmp/demo1 $> echo 'echo 999' >> analysis zsh: no such file or directory: analysis 2 22768 ->1.....................................:Tue 28 Jul 2015 05:20:35 PM EDT:. hopa:/tmp/demo1 $> ls analysis.variant-local 2 22769.....................................:Tue 28 Jul 2015 05:20:38 PM EDT:. hopa:/tmp/demo1 $> git annex indirect commit (recording state in git...) ok [annex/direct/master 2c765d9] commit before switching to indirect mode 1 file changed, 1 deletion(-) delete mode 100644 analysis ok indirect ok ok 2 22770.....................................:Tue 28 Jul 2015 05:21:56 PM EDT:. hopa:/tmp/demo1 $> ls analysis.variant-local 2 22771.....................................:Tue 28 Jul 2015 05:21:57 PM EDT:. hopa:/tmp/demo1 $> git log --stat commit 2c765d9dee7a53e6aaec1dd7efc0550353998a53 Author: Yaroslav Halchenko Date: Tue Jul 28 17:21:56 2015 -0400 commit before switching to indirect mode analysis | 1 - 1 file changed, 1 deletion(-) commit 56e3ee4b3b1ec6fdc1b9e058dcd6cae60bba73ac Author: Yaroslav Halchenko Date: Tue Jul 28 17:20:29 2015 -0400 analysis 1 analysis | 1 + 1 file changed, 1 insertion(+) # End of transcript or log. """]] > Ok, this is [[fixed|done]]. > > What was going on is, proxy was reusing mergeDirectCleanup > since it's in a similar situation to cleaning up after a direct mode > merge. But, a direct mode merge can pull in changes to files that exist > in the local work tree (and may or may not be in the index), but are > not committed to git locally yet. So, it has to > detect those and move them aside (to ".varient-local"). The code to do > that is what was failing in this reuse of mergeDirectCleanup. > > So, I made that code path not run when using proxy. And for commits, > that's good enough. If there's a file in the work tree that's > not added to git, then a proxied commit can't affect it, so that code > path is not needed in this case. > > Come to think, other proxied actions might affect such a file. For > example a proxied revert could revert the deletion of a file with the > same name, that's in the work tree. In this case, should the proxyed revert > fail because there's a file in the work tree that will be overwritten by > the revert? Would be good if it did, because git revert will normally fail > in this situation. > > The only way to make a proxied revert, etc exactly match a > non-proxied revert is to arrange for all files that are in the work > tree and not checked into git to be present in the temp work tree when > the proxied command is run. Which I've now done. --[[Joey]]