Make lock and unlock work in v6 repos on files whose content is not present.
This commit is contained in:
		
					parent
					
						
							
								0249f3aff5
							
						
					
				
			
			
				commit
				
					
						0bc7fee660
					
				
			
		
					 4 changed files with 18 additions and 15 deletions
				
			
		|  | @ -28,6 +28,8 @@ git-annex (6.20160528) UNRELEASED; urgency=medium | |||
|     that had not been synced back to master.  | ||||
|     (This bug caused broken tree objects to get built by a later git annex | ||||
|     sync.) | ||||
|   * Make lock and unlock work in v6 repos on files whose content is not | ||||
|     present. | ||||
| 
 | ||||
|  -- Joey Hess <id@joeyh.name>  Fri, 27 May 2016 13:12:48 -0400 | ||||
| 
 | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ startNew file key = ifM (isJust <$> isAnnexLink file) | |||
| 	) | ||||
|   where | ||||
| 	go (Just key') | ||||
| 		| key' == key = error "content not present; cannot lock" | ||||
| 		| key' == key = cont True | ||||
| 		| otherwise = errorModified | ||||
| 	go Nothing =  | ||||
| 		ifM (isUnmodified key file)  | ||||
|  |  | |||
|  | @ -37,14 +37,9 @@ start :: FilePath -> Key -> CommandStart | |||
| start file key = ifM (isJust <$> isAnnexLink file) | ||||
| 	( do | ||||
| 		showStart "unlock" file | ||||
| 		ifM (inAnnex key) | ||||
| 			( ifM versionSupportsUnlockedPointers | ||||
| 				( next $ performNew file key | ||||
| 				, startOld file key  | ||||
| 				) | ||||
| 			, do | ||||
| 				warning "content not present; cannot unlock" | ||||
| 				next $ next $ return False | ||||
| 		ifM versionSupportsUnlockedPointers | ||||
| 			( next $ performNew file key | ||||
| 			, startOld file key | ||||
| 			) | ||||
| 	, stop | ||||
| 	) | ||||
|  | @ -52,11 +47,16 @@ start file key = ifM (isJust <$> isAnnexLink file) | |||
| performNew :: FilePath -> Key -> CommandPerform | ||||
| performNew dest key = do | ||||
| 	destmode <- liftIO $ catchMaybeIO $ fileMode <$> getFileStatus dest | ||||
| 	replaceFile dest $ \tmp -> do | ||||
| 		r <- linkFromAnnex key tmp destmode | ||||
| 		case r of | ||||
| 			LinkAnnexOk -> return () | ||||
| 			_ -> error "unlock failed" | ||||
| 	replaceFile dest $ \tmp -> | ||||
| 		ifM (inAnnex key) | ||||
| 			( do | ||||
| 				r <- linkFromAnnex key tmp destmode | ||||
| 				case r of | ||||
| 					LinkAnnexOk -> return () | ||||
| 					LinkAnnexNoop -> return () | ||||
| 					_ -> error "unlock failed" | ||||
| 			, liftIO $ writePointerFile tmp key destmode | ||||
| 			) | ||||
| 	next $ cleanupNew dest key destmode | ||||
| 
 | ||||
| cleanupNew ::  FilePath -> Key -> Maybe FileMode -> CommandCleanup | ||||
|  |  | |||
|  | @ -22,4 +22,5 @@ lock git/bup.git/bupindex.hlink git-annex: content not present; cannot lock | |||
| 
 | ||||
| ### 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) | ||||
| 
 | ||||
| 
 | ||||
| > Well, that was simply not implemented, but I've done so now. (unlocking | ||||
| > too). [[done]] --[[Joey]] | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Joey Hess
				Joey Hess