sync --quiet
* sync: When --quiet is used, run git commit, push, and pull without their ususual output. * merge: When --quiet is used, run git merge without its usual output. This might also make --quiet work better for some other commands that make commits, like git-annex adjust. Sponsored-by: Kevin Mueller on Patreon
This commit is contained in:
		
					parent
					
						
							
								f84bd8e921
							
						
					
				
			
			
				commit
				
					
						33a80d083a
					
				
			
		
					 13 changed files with 124 additions and 65 deletions
				
			
		|  | @ -218,21 +218,23 @@ seek' o = do | |||
| 			commandAction (withbranch cleanupLocal) | ||||
| 			mapM_ (commandAction . withbranch . cleanupRemote) gitremotes | ||||
| 		else do | ||||
| 			mc <- mergeConfig | ||||
| 
 | ||||
| 			-- Syncing involves many actions, any of which | ||||
| 			-- can independently fail, without preventing | ||||
| 			-- the others from running.  | ||||
| 			-- These actions cannot be run concurrently. | ||||
| 			mapM_ includeCommandAction $ concat | ||||
| 				[ [ commit o ] | ||||
| 				, [ withbranch (mergeLocal mergeConfig o) ] | ||||
| 				, map (withbranch . pullRemote o mergeConfig) gitremotes | ||||
| 				, [ withbranch (mergeLocal mc o) ] | ||||
| 				, map (withbranch . pullRemote o mc) gitremotes | ||||
| 				,  [ mergeAnnex ] | ||||
| 				] | ||||
| 			 | ||||
| 			content <- shouldSyncContent o | ||||
| 
 | ||||
| 			forM_ (filter isImport contentremotes) $ | ||||
| 				withbranch . importRemote content o mergeConfig | ||||
| 				withbranch . importRemote content o mc | ||||
| 			forM_ (filter isThirdPartyPopulated contentremotes) $ | ||||
| 				pullThirdPartyPopulated o | ||||
| 			 | ||||
|  | @ -259,7 +261,7 @@ seek' o = do | |||
| 				-- avoid our push overwriting those changes. | ||||
| 				when (syncedcontent || exportedcontent) $ do | ||||
| 					mapM_ includeCommandAction $ concat | ||||
| 						[ map (withbranch . pullRemote o mergeConfig) gitremotes | ||||
| 						[ map (withbranch . pullRemote o mc) gitremotes | ||||
| 						, [ commitAnnex, mergeAnnex ] | ||||
| 						] | ||||
| 	 | ||||
|  | @ -273,17 +275,21 @@ seek' o = do | |||
| prepMerge :: Annex () | ||||
| prepMerge = Annex.changeDirectory . fromRawFilePath =<< fromRepo Git.repoPath | ||||
| 
 | ||||
| mergeConfig :: [Git.Merge.MergeConfig]	 | ||||
| mergeConfig =  | ||||
| 	[ Git.Merge.MergeNonInteractive | ||||
| 	-- In several situations, unrelated histories should be merged | ||||
| 	-- together. This includes pairing in the assistant, merging | ||||
| 	-- from a remote into a newly created direct mode repo, | ||||
| 	-- and an initial merge from an import from a special remote. | ||||
| 	-- (Once direct mode is removed, this could be changed, so only | ||||
| 	-- the assistant and import from special remotes use it.) | ||||
| 	, Git.Merge.MergeUnrelatedHistories | ||||
| 	] | ||||
| mergeConfig :: Annex [Git.Merge.MergeConfig] | ||||
| mergeConfig = do | ||||
| 	quiet <- commandProgressDisabled | ||||
| 	return $ catMaybes | ||||
| 		[ Just Git.Merge.MergeNonInteractive | ||||
| 		-- In several situations, unrelated histories should be | ||||
| 		-- merged together. This includes pairing in the assistant, | ||||
| 		-- merging from a remote into a newly created direct mode | ||||
| 		-- repo, and an initial merge from an import from a special | ||||
| 		-- remote. (Once direct mode is removed, this could be | ||||
| 		-- changed, so only the assistant and import from special | ||||
| 		-- remotes use it.) | ||||
| 		, Just Git.Merge.MergeUnrelatedHistories | ||||
| 		, if quiet then Just Git.Merge.MergeQuiet else Nothing | ||||
| 		] | ||||
| 
 | ||||
| merge :: CurrBranch -> [Git.Merge.MergeConfig] -> SyncOptions -> Git.Branch.CommitMode -> Git.Branch -> Annex Bool | ||||
| merge currbranch mergeconfig o commitmode tomerge = do | ||||
|  | @ -331,7 +337,9 @@ commit o = stopUnless shouldcommit $ starting "commit" ai si $ do | |||
| 	Annex.Branch.commit =<< Annex.Branch.commitMessage | ||||
| 	next $ do | ||||
| 		showOutput | ||||
| 		void $ inRepo $ Git.Branch.commitCommand Git.Branch.ManualCommit | ||||
| 		let cmode = Git.Branch.ManualCommit | ||||
| 		cquiet <- Git.Branch.CommitQuiet <$> commandProgressDisabled | ||||
| 		void $ inRepo $ Git.Branch.commitCommand cmode cquiet | ||||
| 			[ Param "-a" | ||||
| 			, Param "-m" | ||||
| 			, Param commitmessage | ||||
|  | @ -462,10 +470,15 @@ pullRemote o mergeconfig remote branch = stopUnless (pure $ pullOption o && want | |||
|   where | ||||
| 	fetch bs = do | ||||
| 		repo <- Remote.getRepo remote | ||||
| 		ms <- Annex.getState Annex.output | ||||
| 		inRepoWithSshOptionsTo repo (Remote.gitconfig remote) $ | ||||
| 			Git.Command.runBool $ | ||||
| 				[Param "fetch", Param $ Remote.name remote] | ||||
| 					++ map Param bs | ||||
| 			Git.Command.runBool $ catMaybes | ||||
| 				[ Just $ Param "fetch" | ||||
| 				, if commandProgressDisabled' ms | ||||
| 					then Just $ Param "--quiet" | ||||
| 					else Nothing | ||||
| 				, Just $ Param $ Remote.name remote | ||||
| 				] ++ map Param bs | ||||
| 	wantpull = remoteAnnexPull (Remote.gitconfig remote) | ||||
| 	ai = ActionItemOther (Just (Remote.name remote)) | ||||
| 	si = SeekInput [] | ||||
|  | @ -548,8 +561,9 @@ pushRemote o remote (Just branch, _) = do | |||
| 		starting "push" ai si $ next $ do | ||||
| 			repo <- Remote.getRepo remote | ||||
| 			showOutput | ||||
| 			ms <- Annex.getState Annex.output | ||||
| 			ok <- inRepoWithSshOptionsTo repo gc $ | ||||
| 				pushBranch remote mainbranch | ||||
| 				pushBranch remote mainbranch ms | ||||
| 			if ok | ||||
| 				then postpushupdate repo | ||||
| 				else do | ||||
|  | @ -621,8 +635,8 @@ pushRemote o remote (Just branch, _) = do | |||
|  - The only difference caused by using a forced push in that case is that | ||||
|  - the last repository to push wins the race, rather than the first to push. | ||||
|  -} | ||||
| pushBranch :: Remote -> Maybe Git.Branch -> Git.Repo -> IO Bool | ||||
| pushBranch remote mbranch g = directpush `after` annexpush `after` syncpush | ||||
| pushBranch :: Remote -> Maybe Git.Branch -> MessageState -> Git.Repo -> IO Bool | ||||
| pushBranch remote mbranch ms g = directpush `after` annexpush `after` syncpush | ||||
|   where | ||||
| 	syncpush = flip Git.Command.runBool g $ pushparams $ catMaybes | ||||
| 		[ (refspec . fromAdjustedBranch) <$> mbranch | ||||
|  | @ -648,9 +662,12 @@ pushBranch remote mbranch g = directpush `after` annexpush `after` syncpush | |||
| 			(transcript, ok) <- processTranscript' p Nothing | ||||
| 			when (not ok && not ("denyCurrentBranch" `isInfixOf` transcript)) $ | ||||
| 				hPutStr stderr transcript | ||||
| 	pushparams branches = | ||||
| 		[ Param "push" | ||||
| 		, Param $ Remote.name remote | ||||
| 	pushparams branches = catMaybes | ||||
| 		[ Just $ Param "push" | ||||
| 		, if commandProgressDisabled' ms | ||||
| 			then Just $ Param "--quiet" | ||||
| 			else Nothing | ||||
| 		, Just $ Param $ Remote.name remote | ||||
| 		] ++ map Param branches | ||||
| 	refspec b = concat  | ||||
| 		[ Git.fromRef $ Git.Ref.base b | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Joey Hess
				Joey Hess