From 519cadd1de6577ec6275bd537808437a4773097b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 1 Mar 2019 14:44:22 -0400 Subject: [PATCH] refactor RemoteTrackingBranch Not specific to Import; export will use it too. --- Annex/Import.hs | 12 ------------ Annex/RemoteTrackingBranch.hs | 34 ++++++++++++++++++++++++++++++++++ COPYRIGHT | 2 +- Command/Import.hs | 4 ++-- git-annex.cabal | 1 + 5 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 Annex/RemoteTrackingBranch.hs diff --git a/Annex/Import.hs b/Annex/Import.hs index 4d065b53d5..d653208ea3 100644 --- a/Annex/Import.hs +++ b/Annex/Import.hs @@ -8,8 +8,6 @@ {-# LANGUAGE OverloadedStrings #-} module Annex.Import ( - RemoteTrackingBranch(..), - mkRemoteTrackingBranch, ImportTreeConfig(..), ImportCommitConfig(..), buildImportCommit, @@ -45,16 +43,6 @@ import qualified Database.ContentIdentifier as CID import Control.Concurrent.STM import qualified Data.Map.Strict as M -newtype RemoteTrackingBranch = RemoteTrackingBranch - { fromRemoteTrackingBranch :: Ref } - deriving (Show, Eq) - -{- Makes a remote tracking branch corresponding to a local branch. - - Note that the local branch does not have to exist yet. -} -mkRemoteTrackingBranch :: Remote -> Ref -> RemoteTrackingBranch -mkRemoteTrackingBranch remote ref = RemoteTrackingBranch $ - Git.Ref.underBase ("refs/remotes/" ++ Remote.name remote) ref - {- Configures how to build an import tree. -} data ImportTreeConfig = ImportTree diff --git a/Annex/RemoteTrackingBranch.hs b/Annex/RemoteTrackingBranch.hs new file mode 100644 index 0000000000..09cc18aa15 --- /dev/null +++ b/Annex/RemoteTrackingBranch.hs @@ -0,0 +1,34 @@ +{- git-annex remote tracking branches + - + - Copyright 2019 Joey Hess + - + - Licensed under the GNU AGPL version 3 or higher. + -} + +module Annex.RemoteTrackingBranch + ( RemoteTrackingBranch + , mkRemoteTrackingBranch + , fromRemoteTrackingBranch + , setRemoteTrackingBranch + ) where + +import Annex.Common +import Git.Types +import qualified Git.Ref +import qualified Git.Branch +import qualified Types.Remote as Remote + +newtype RemoteTrackingBranch = RemoteTrackingBranch + { fromRemoteTrackingBranch :: Ref } + deriving (Show, Eq) + +{- Makes a remote tracking branch corresponding to a local branch. + - Note that the local branch does not need to exist yet. -} +mkRemoteTrackingBranch :: Remote -> Branch -> RemoteTrackingBranch +mkRemoteTrackingBranch remote ref = RemoteTrackingBranch $ + Git.Ref.underBase ("refs/remotes/" ++ Remote.name remote) ref + +{- Set remote tracking branch to point to a commit. -} +setRemoteTrackingBranch :: RemoteTrackingBranch -> Sha -> Annex () +setRemoteTrackingBranch tb commit = + inRepo $ Git.Branch.update' (fromRemoteTrackingBranch tb) commit diff --git a/COPYRIGHT b/COPYRIGHT index ef3109d2dd..53ba3d4a62 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -10,7 +10,7 @@ Copyright: © 2012-2017 Joey Hess © 2014 Sören Brunk License: AGPL-3+ -Files: Annex/AdjustedBranch.hs Annex/AdjustedBranch/Name.hs Annex/CurrentBranch.hs Annex/Import.hs Annex/Version.hs Benchmark.hs Database/ContentIdentifier.hs Logs/File.hs Logs/Line.hs Logs/Smudge.hs Logs/ContentIdentifier.hs Logs/ContentIdentifier/Pure.hs Remote/Git.hs Remote/Helper/Ssh.hs Remote/Adb.hs Remote/External.hs Remote/Extermal/Types.hs Types/AdjustedBranch.hs Types/RepoVersion.hs Upgrade/V6.hs +Files: Annex/AdjustedBranch.hs Annex/AdjustedBranch/Name.hs Annex/CurrentBranch.hs Annex/Import.hs Annex/RemoteTrackingBranch.hs Benchmark.hs Database/ContentIdentifier.hs Logs/File.hs Logs/Line.hs Logs/Smudge.hs Logs/ContentIdentifier.hs Logs/ContentIdentifier/Pure.hs Remote/Git.hs Remote/Helper/Ssh.hs Remote/Adb.hs Remote/External.hs Remote/Extermal/Types.hs Types/AdjustedBranch.hs Types/RepoVersion.hs Upgrade/V6.hs Copyright: © 2011-2019 Joey Hess License: AGPL-3+ diff --git a/Command/Import.hs b/Command/Import.hs index 48bb0a300d..7f6c723ed3 100644 --- a/Command/Import.hs +++ b/Command/Import.hs @@ -16,7 +16,6 @@ import qualified Command.Add import qualified Command.Reinject import qualified Types.Remote as Remote import qualified Git.Ref -import qualified Git.Branch import Utility.CopyFile import Backend import Types.KeySource @@ -26,6 +25,7 @@ import Annex.FileMatcher import Annex.Ingest import Annex.InodeSentinal import Annex.Import +import Annex.RemoteTrackingBranch import Utility.InodeCache import Logs.Location import Git.FilePath @@ -296,7 +296,7 @@ commitRemote remote branch tb parentcommit importtreeconfig importcommitconfig i updateremotetrackingbranch importcommit = case importcommit <|> parentcommit of Just c -> do - inRepo $ Git.Branch.update' (fromRemoteTrackingBranch tb) c + setRemoteTrackingBranch tb c return True Nothing -> do warning $ "Nothing to import and " ++ fromRef branch ++ " does not exist." diff --git a/git-annex.cabal b/git-annex.cabal index 72d36a009f..2b3d609f40 100644 --- a/git-annex.cabal +++ b/git-annex.cabal @@ -650,6 +650,7 @@ Executable git-annex Annex.Perms Annex.Queue Annex.ReplaceFile + Annex.RemoteTrackingBranch Annex.SpecialRemote Annex.Ssh Annex.TaggedPush