comment
This commit is contained in:
		
					parent
					
						
							
								30a81d4644
							
						
					
				
			
			
				commit
				
					
						d01e4b51ae
					
				
			
		
					 1 changed files with 61 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
[[!comment format=mdwn
 | 
			
		||||
 username="joey"
 | 
			
		||||
 subject="""comment 1"""
 | 
			
		||||
 date="2023-09-13T16:46:35Z"
 | 
			
		||||
 content="""
 | 
			
		||||
I reproduced the behavior you showed.
 | 
			
		||||
 | 
			
		||||
But git behaves the same way in the same situation. Compare these two commands:
 | 
			
		||||
 | 
			
		||||
	joey@darkstar:~/tmp/bench/dir2>git --work-tree=/home/joey/tmp/bench --git-dir=/home/joey/tmp/bench/.dotfiles annex list
 | 
			
		||||
	here
 | 
			
		||||
	|web
 | 
			
		||||
	||bittorrent
 | 
			
		||||
	|||
 | 
			
		||||
	error: pathspec 'dir2/' did not match any file(s) known to git
 | 
			
		||||
	Did you forget to 'git add'?
 | 
			
		||||
	list: 1 failed
 | 
			
		||||
 | 
			
		||||
	joey@darkstar:~/tmp/bench/dir2>git --git-dir=../.git --work-tree=.. ls-files --stage --error-unmatch --
 | 
			
		||||
	error: pathspec 'dir2/' did not match any file(s) known to git
 | 
			
		||||
	Did you forget to 'git add'?
 | 
			
		||||
 | 
			
		||||
The second command is actually what the first command runs internally.
 | 
			
		||||
 | 
			
		||||
Also, the behavior does not have anything to do with --git-dir and --work-tree:
 | 
			
		||||
 | 
			
		||||
	joey@darkstar:~/tmp/bench>git init repo
 | 
			
		||||
	Initialized empty Git repository in /home/joey/tmp/bench/repo/.git/
 | 
			
		||||
	joey@darkstar:~/tmp/bench>cd repo
 | 
			
		||||
	joey@darkstar:~/tmp/bench/repo>git-annex init
 | 
			
		||||
	init  ok
 | 
			
		||||
	m(recording state in git...)
 | 
			
		||||
	joey@darkstar:~/tmp/bench/repo>mkdir dir2
 | 
			
		||||
	joey@darkstar:~/tmp/bench/repo>cd dir2
 | 
			
		||||
	joey@darkstar:~/tmp/bench/repo/dir2>git-annex list
 | 
			
		||||
	here
 | 
			
		||||
	|web
 | 
			
		||||
	||bittorrent
 | 
			
		||||
	|||
 | 
			
		||||
	error: pathspec 'dir2/' did not match any file(s) known to git
 | 
			
		||||
	Did you forget to 'git add'?
 | 
			
		||||
	list: 1 failed
 | 
			
		||||
 | 
			
		||||
So if there's a bug here, it's that `git-annex list` displays an error message
 | 
			
		||||
when run in a subdirectory that does not contain any files tracked by git.
 | 
			
		||||
 | 
			
		||||
Also, many other git-annex commands run `git ls-files --error-unmatch`
 | 
			
		||||
and so behave the same when run in such a subdirectory. Including whereis, find,
 | 
			
		||||
get, etc.
 | 
			
		||||
 | 
			
		||||
In fact, annex.skipunknown controls whether `--error-unmatch` is used.
 | 
			
		||||
Setting it to true will avoid this behavior. But there were good reasons to
 | 
			
		||||
change the annex.skipunknown default to false. And good reasons to use 
 | 
			
		||||
`--error-unmatch` to implement that.
 | 
			
		||||
 | 
			
		||||
Also, this behavior is somewhat documented, in the documentation of annex.skipunknown,
 | 
			
		||||
it specifically talks about the case where no files in the current (or specified) 
 | 
			
		||||
directory are tracked by git.
 | 
			
		||||
 | 
			
		||||
So in my opinion, this does not seem like a bug.
 | 
			
		||||
"""]]
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue