Revert "multiple -m"
authorJoey Hess <joeyh@joeyh.name>
Tue, 2 Apr 2024 21:29:07 +0000 (17:29 -0400)
committerJoey Hess <joeyh@joeyh.name>
Tue, 2 Apr 2024 21:29:07 +0000 (17:29 -0400)
This reverts commit cee12f6a2fd7f90eb2aa72cd638b6bcdf45e4f92.

This commit broke git-annex init run in a repo that was cloned from a
repo with an adjusted branch checked out.

The problem is that findAdjustingCommit was not able to identify the
commit that created the adjusted branch. It seems that there is an extra
"\n" at the end of the commit message that it does not expect.

Since backwards compatability needs to be maintained, cannot just make
findAdjustingCommit accept it with the "\n". Will have to instead
have one commitTree variant that uses the old method, and use it for
adjusted branch committing.

15 files changed:
Annex/AdjustedBranch.hs
Annex/AdjustedBranch/Merge.hs
Annex/Branch.hs
Annex/Import.hs
Annex/RemoteTrackingBranch.hs
Annex/View.hs
CHANGELOG
Command/FilterBranch.hs
Command/Import.hs
Command/Sync.hs
Git/Branch.hs
doc/git-annex-assist.mdwn
doc/git-annex-import.mdwn
doc/git-annex-sync.mdwn
doc/todo/multiple_-m.mdwn

index c545930133f08ea3e6ae3e7d65fda89e12740bb2..a7b6f03ed7e55ec2459d959d57ef8c3443b9ee5d 100644 (file)
@@ -469,7 +469,7 @@ commitAdjustedTree' treesha (BasisBranch basis) parents =
                        (commitCommitterMetaData basiscommit)
                        (mkcommit cmode)
        mkcommit cmode = Git.Branch.commitTree cmode
-               [adjustedBranchCommitMessage] parents treesha
+               adjustedBranchCommitMessage parents treesha
 
 {- This message should never be changed. -}
 adjustedBranchCommitMessage :: String
@@ -577,7 +577,7 @@ reverseAdjustedCommit commitparent adj (csha, basiscommit) origbranch
                        (commitAuthorMetaData basiscommit)
                        (commitCommitterMetaData basiscommit) $
                                Git.Branch.commitTree cmode
-                                       [commitMessage basiscommit]
+                                       (commitMessage basiscommit)
                                        [commitparent] treesha
                return (Right revadjcommit)
 
index 904f4ee41280ec5cff45de414e82aa9b2eeaccfd..26ab0e7e3ed41cdaa8e61c32b3aaf02c55f30045 100644 (file)
@@ -153,8 +153,7 @@ mergeToAdjustedBranch tomerge (origbranch, adj) mergeconfig canresolvemerge comm
                        then do
                                cmode <- annexCommitMode <$> Annex.getGitConfig
                                c <- inRepo $ Git.Branch.commitTree cmode
-                                       ["Merged " ++ fromRef tomerge]
-                                       [adjmergecommit]
+                                       ("Merged " ++ fromRef tomerge) [adjmergecommit]
                                        (commitTree currentcommit)
                                inRepo $ Git.Branch.update "updating adjusted branch" currbranch c
                                propigateAdjustedCommits origbranch adj
index bcc9ae114dedbb4f84f4196ee362257378fdcd6f..9b5365b4567a2b941dfd3fd0b78ce88c864c4a45 100644 (file)
@@ -945,9 +945,9 @@ rememberTreeishLocked treeish graftpoint jl = do
        addedt <- inRepo $ Git.Tree.graftTree treeish graftpoint origtree
        cmode <- annexCommitMode <$> Annex.getGitConfig
        c <- inRepo $ Git.Branch.commitTree cmode
-               ["graft"] [branchref] addedt
+               "graft" [branchref] addedt
        c' <- inRepo $ Git.Branch.commitTree cmode
-               ["graft cleanup"] [c] origtree
+               "graft cleanup" [c] origtree
        inRepo $ Git.Branch.update' fullname c'
        -- The tree in c' is the same as the tree in branchref,
        -- and the index was updated to that above, so it's safe to
index 27787403824930b0d87ce89bed551055a2eb5d41..eaf41f4f79d5245c7aac6a0eeeae7669c8ad662e 100644 (file)
@@ -86,7 +86,7 @@ data ImportCommitConfig = ImportCommitConfig
        { importCommitTracking :: Maybe Sha
        -- ^ Current commit on the remote tracking branch.
        , importCommitMode :: Git.Branch.CommitMode
-       , importCommitMessages :: [String]
+       , importCommitMessage :: String
        }
 
 {- Buils a commit for an import from a special remote.
@@ -251,7 +251,7 @@ buildImportCommit' remote importcommitconfig mtrackingcommit imported@(History t
 
        mkcommit parents tree = inRepo $ Git.Branch.commitTree
                (importCommitMode importcommitconfig)
-               (importCommitMessages importcommitconfig)
+               (importCommitMessage importcommitconfig)
                parents
                tree
 
index 06591d091878345a66c5a6d75e0a3d09be9b006f..ade303e02d7fa914564edaadafc896259ef6ff18 100644 (file)
@@ -77,7 +77,7 @@ makeRemoteTrackingBranchMergeCommit' commitsha importedhistory treesha = do
        cmode <- annexCommitMode <$> Annex.getGitConfig
        inRepo $ Git.Branch.commitTree
                        cmode
-                       ["remote tracking branch"]
+                       "remote tracking branch"
                        [commitsha, importedhistory]
                        treesha
 
index 7372287380d6e65f1fe5ae55ff9989c02df1ed00..b47e34564b0a026817c35d130f3073455514782f 100644 (file)
@@ -577,7 +577,7 @@ updateView view madj = do
                        cmode <- annexCommitMode <$> Annex.getGitConfig
                        let msg = "updated " ++ fromRef (branchView view madj)
                        let parent = catMaybes [oldcommit]
-                       inRepo (Git.Branch.commitTree cmode [msg] parent newtree)
+                       inRepo (Git.Branch.commitTree cmode msg parent newtree)
                else return Nothing
 
 {- Diff between currently checked out branch and staged changes, and
index 3a4adca1086f8122b3133a40ae67b1bda69151b9..83dfa02de9c30f9dc1f55bbefda62a021b38cb08 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -13,8 +13,6 @@ git-annex (10.20240228) UNRELEASED; urgency=medium
     the same repository.
   * Windows: Fix escaping output to terminal when using old
     versions of MinTTY.
-  * sync, assist, import: Allow -m option to be specified multiple
-    times, to provide additional paragraphs for the commit message.
 
  -- Joey Hess <id@joeyh.name>  Tue, 27 Feb 2024 13:07:10 -0400
 
index 6c565c5d2919f07e41665e4a91394a31c628e788..10f03cccda04bd52e38b5783595b00b162c25e47 100644 (file)
@@ -189,7 +189,7 @@ seek o = withOtherTmp $ \tmpdir -> do
        liftIO $ removeWhenExistsWith removeLink tmpindex
        cmode <- annexCommitMode <$> Annex.getGitConfig
        cmessage <- Annex.Branch.commitMessage
-       c <- inRepo $ Git.commitTree cmode [cmessage] [] t
+       c <- inRepo $ Git.commitTree cmode cmessage [] t
        liftIO $ putStrLn (fromRef c)
   where
        ww = WarnUnmatchLsFiles "filter-branch"
index f5483cc7d5621b157f21503ae596cb594c2a76a8..a37064eefc0d83321d2c5373639f281a13635b49 100644 (file)
@@ -1,6 +1,6 @@
 {- git-annex command
  -
- - Copyright 2012-2024 Joey Hess <id@joeyh.name>
+ - Copyright 2012-2021 Joey Hess <id@joeyh.name>
  -
  - Licensed under the GNU AGPL version 3 or higher.
  -}
@@ -70,7 +70,7 @@ data ImportOptions
                , importToSubDir :: Maybe FilePath
                , importContent :: Bool
                , checkGitIgnoreOption :: CheckGitIgnore
-               , messageOption :: [String]
+               , messageOption :: Maybe String
                }
 
 optParser :: CmdParamsDesc -> Parser ImportOptions
@@ -82,7 +82,7 @@ optParser desc = do
                )
        dupmode <- fromMaybe Default <$> optional duplicateModeParser
        ic <- Command.Add.checkGitIgnoreSwitch
-       message <- many (strOption
+       message <- optional (strOption
                ( long "message" <> short 'm' <> metavar "MSG"
                <> help "commit message"
                ))
@@ -322,8 +322,8 @@ verifyExisting key destfile (yes, no) = do
        verifyEnoughCopiesToDrop [] key Nothing needcopies mincopies [] preverified tocheck
                (const yes) no
 
-seekRemote :: Remote -> Branch -> Maybe TopFilePath -> Bool -> CheckGitIgnore -> [String] -> CommandSeek
-seekRemote remote branch msubdir importcontent ci importmessages = do
+seekRemote :: Remote -> Branch -> Maybe TopFilePath -> Bool -> CheckGitIgnore -> Maybe String -> CommandSeek
+seekRemote remote branch msubdir importcontent ci mimportmessage = do
        importtreeconfig <- case msubdir of
                Nothing -> return ImportTree
                Just subdir ->
@@ -336,7 +336,7 @@ seekRemote remote branch msubdir importcontent ci importmessages = do
        
        trackingcommit <- fromtrackingbranch Git.Ref.sha
        cmode <- annexCommitMode <$> Annex.getGitConfig
-       let importcommitconfig = ImportCommitConfig trackingcommit cmode importmessages'
+       let importcommitconfig = ImportCommitConfig trackingcommit cmode importmessage
        let commitimport = commitRemote remote branch tb trackingcommit importtreeconfig importcommitconfig
 
        importabletvar <- liftIO $ newTVarIO Nothing
@@ -353,9 +353,9 @@ seekRemote remote branch msubdir importcontent ci importmessages = do
                                includeCommandAction $ 
                                        commitimport imported
   where
-       importmessages'
-               | null importmessages = ["import from " ++ Remote.name remote]
-               | otherwise = importmessages
+       importmessage = fromMaybe 
+               ("import from " ++ Remote.name remote)
+               mimportmessage
 
        tb = mkRemoteTrackingBranch remote branch
 
index 5c4ba2ebe218291598bebab5825c78781a84dc12..e222dd087487182cba1115ce00a1b72c47ecbe34 100644 (file)
@@ -1,7 +1,7 @@
 {- git-annex command
  -
  - Copyright 2011 Joachim Breitner <mail@joachim-breitner.de>
- - Copyright 2011-2024 Joey Hess <id@joeyh.name>
+ - Copyright 2011-2023 Joey Hess <id@joeyh.name>
  -
  - Licensed under the GNU AGPL version 3 or higher.
  -}
@@ -105,7 +105,7 @@ data SyncOptions = SyncOptions
        , notOnlyAnnexOption :: Bool
        , commitOption :: Bool
        , noCommitOption :: Bool
-       , messageOption :: [String]
+       , messageOption :: Maybe String
        , pullOption :: Bool
        , pushOption :: Bool
        , contentOption :: Maybe Bool
@@ -125,7 +125,7 @@ instance Default SyncOptions where
                , notOnlyAnnexOption = False
                , commitOption = False
                , noCommitOption = False
-               , messageOption = []
+               , messageOption = Nothing
                , pullOption = False
                , pushOption = False
                , contentOption = Just False
@@ -169,8 +169,8 @@ optParser mode desc = SyncOptions
                        ( long "no-commit"
                        <> help "avoid git commit" 
                        ))
-       <*> unlessmode [SyncMode, AssistMode] []
-               (many (strOption
+       <*> unlessmode [SyncMode, AssistMode] Nothing
+               (optional (strOption
                        ( long "message" <> short 'm' <> metavar "MSG"
                        <> help "commit message"
                        )))
@@ -402,18 +402,17 @@ syncRemotes' ps available =
 
 commit :: SyncOptions -> CommandStart
 commit o = stopUnless shouldcommit $ starting "commit" ai si $ do
+       commitmessage <- maybe commitMsg return (messageOption o)
        Annex.Branch.commit =<< Annex.Branch.commitMessage
-       mopts <- concatMap (\msg -> [Param "-m", Param msg])
-               <$> if null (messageOption o)
-                       then (:[]) <$> commitMsg
-                       else pure (messageOption o)
        next $ do
                showOutput
                let cmode = Git.Branch.ManualCommit
                cquiet <- Git.Branch.CommitQuiet <$> commandProgressDisabled
-               void $ inRepo $ Git.Branch.commitCommand
-                       cmode cquiet
-                       ([ Param "-a" ] ++ mopts)
+               void $ inRepo $ Git.Branch.commitCommand cmode cquiet
+                       [ Param "-a"
+                       , Param "-m"
+                       , Param commitmessage
+                       ]
                return True
   where
        shouldcommit = notOnlyAnnex o <&&>
@@ -427,8 +426,7 @@ commitMsg :: Annex String
 commitMsg = do
        u <- getUUID
        m <- uuidDescMap
-       return $ "git-annex in "
-               ++ maybe "unknown" fromUUIDDesc (M.lookup u m)
+       return $ "git-annex in " ++ maybe "unknown" fromUUIDDesc (M.lookup u m)
 
 mergeLocal :: [Git.Merge.MergeConfig] -> SyncOptions -> CurrBranch -> CommandStart
 mergeLocal mergeconfig o currbranch = stopUnless (notOnlyAnnex o) $
@@ -580,7 +578,7 @@ importRemote importcontent o remote currbranch
                        let (branch, subdir) = splitRemoteAnnexTrackingBranchSubdir b
                        if canImportKeys remote importcontent
                                then do
-                                       Command.Import.seekRemote remote branch subdir importcontent (CheckGitIgnore True) []
+                                       Command.Import.seekRemote remote branch subdir importcontent (CheckGitIgnore True) Nothing
                                        -- Importing generates a branch
                                        -- that is not initially connected
                                        -- to the current branch, so allow
index 40ddaf78d8611e39878efdc48d30c3ab935e5063..f30e3572f269fc03192e4f231504a676f05dfa59 100644 (file)
@@ -178,7 +178,7 @@ commit commitmode allowempty message branch parentrefs repo = do
        tree <- writeTree repo
        ifM (cancommit tree)
                ( do
-                       sha <- commitTree commitmode [message] parentrefs tree repo
+                       sha <- commitTree commitmode message parentrefs tree repo
                        update' branch sha repo
                        return $ Just sha
                , return Nothing
@@ -207,15 +207,15 @@ writeTreeQuiet repo = extractSha <$> withNullHandle go
        go nullh = pipeReadStrict' (\p -> p { std_err = UseHandle nullh }) 
                [Param "write-tree"] repo
 
-commitTree :: CommitMode -> [String] -> [Ref] -> Ref -> Repo -> IO Sha
-commitTree commitmode messages parentrefs tree repo =
-       getSha "commit-tree" $ pipeReadStrict ps repo
+commitTree :: CommitMode -> String -> [Ref] -> Ref -> Repo -> IO Sha
+commitTree commitmode message parentrefs tree repo =
+       getSha "commit-tree" $
+               pipeWriteRead ([Param "commit-tree", Param (fromRef tree)] ++ ps)
+                       sendmsg repo
   where
-       ps = [Param "commit-tree", Param (fromRef tree)]
-               ++ applyCommitModeForCommitTree commitmode baseparams repo
-       baseparams = map Param $
-               concatMap (\r -> ["-p", fromRef r]) parentrefs
-                       ++ concatMap (\msg -> ["-m", msg]) messages
+       sendmsg = Just $ flip hPutStr message
+       ps = applyCommitModeForCommitTree commitmode parentparams repo
+       parentparams = map Param $ concatMap (\r -> ["-p", fromRef r]) parentrefs
 
 {- A leading + makes git-push force pushing a branch. -}
 forcePush :: String -> String
index bc843be1a9355217ac7e25e8d83f97321afcc584..f71e2a28153ef44b0a427c54cfa9d25364d48c68 100644 (file)
@@ -34,9 +34,6 @@ files that it does not match will instead be added with `git add`.
 
   Use this option to specify a commit message.
 
-  If multiple -m options are given, their values are concatenated
-  as separate paragraphs.
-
 * `--content-of=path` `-C path`
 
   Only add, pull, and push files in the given path.
index e78fa0ac14b12283f7d7e68f86399495c746461d..b72fae5d5fd93695adf4c5cf89c34a3400cba9ea 100644 (file)
@@ -107,9 +107,6 @@ the tree of files on the remote, even when importing into a subdirectory.
   Use this option to specify a commit message for the changes that have
   been made to the special remote since the last import from it.
 
-  If multiple -m options are given, their values are concatenated
-  as separate paragraphs.
-
 # IMPORTING FROM A DIRECTORY
 
 When run with a path, `git annex import` **moves** files from somewhere outside
index 6c7235ddf771545dd04ec782cc2b262e33346fb6..d3e76be91a3f46a6238056ee2f9042c1cae3094d 100644 (file)
@@ -51,9 +51,6 @@ when syncing with repositories that have preferred content configured.
 
   Use this option to specify a commit message.
 
-  If multiple -m options are given, their values are concatenated
-  as separate paragraphs.
-
 * `--pull`, `--no-pull`
 
   Use this option to disable pulling.
index 14cb9189e32b5d247b7de19811e801564ec354c7..c9c01b2ef9fb4ddc60152269f63981dc3a7b1617 100644 (file)
@@ -1,4 +1,2 @@
 git-annex sync etc -m should be able to be specified multiple times. In git
 commit, multiple -m can be used to make a multiparagraph commit. --[[Joey]]
-
-> [[done]]