views: add automatically constructed file location metadata
When constructing views, metadata is available about the location of the file in the view's reference branch. Allows incorporating parts of the directory hierarchy in a view. For example `git annex view tag=* podcasts/=*` makes a view in the form tag/showname. Performance impact: I benchmarked git annex view tag=* in the conference proceedings repo to take 6.459s before this change, and 6.544s after. FWIW, I considered making the syntax for this be podcasts/*, which might be easier for the user to learn. However, I think it's not as good: * The user has to then juggle two different syntaxes, and podcasts/* will be expanded by the shell so they also need to quote it, while podcasts/=* is unlikely to be expanded by the shell. * It would allow for things like podcasts/*/* and *.mp3 which do not map well into views. This commit was sponsored by Aurélien Pinceaux.
This commit is contained in:
		
					parent
					
						
							
								73a5245502
							
						
					
				
			
			
				commit
				
					
						079b35a1a8
					
				
			
		
					 8 changed files with 89 additions and 25 deletions
				
			
		|  | @ -43,7 +43,7 @@ perform view = do | |||
| 	next $ checkoutViewBranch view applyView | ||||
| 
 | ||||
| paramView :: String | ||||
| paramView = paramPair (paramRepeating "FIELD=VALUE") (paramRepeating "TAG") | ||||
| paramView = paramPair (paramRepeating "TAG") (paramRepeating "FIELD=VALUE") | ||||
| 
 | ||||
| parseViewParam :: String -> (MetaField, String) | ||||
| parseViewParam s = case separate (== '=') s of | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Joey Hess
				Joey Hess