packages feed

gitHUD 1.3.4 → 1.3.5

raw patch · 3 files changed

+34/−11 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ GitHUD.Git.Command: gitCmdMergeBase :: String -> MVar String -> IO ()

Files

gitHUD.cabal view
@@ -1,5 +1,5 @@ name:                gitHUD-version:             1.3.4+version:             1.3.5 synopsis:            More efficient replacement to the great git-radar description:         Please see README.md homepage:            http://github.com/gbataille/gitHUD#readme
src/GitHUD/Git/Command.hs view
@@ -1,5 +1,6 @@ module GitHUD.Git.Command (   gitCmdLocalBranchName+  , gitCmdMergeBase   , gitCmdRemoteName   , gitCmdRemoteBranchName   , gitCmdPorcelainStatus@@ -27,6 +28,13 @@ gitCmdLocalBranchName out = do   localBranch <- readProcessWithIgnoreExitCode "git" ["symbolic-ref", "--short", "HEAD"] ""   putMVar out localBranch++gitCmdMergeBase :: String     -- ^ local branch name+                -> MVar String    -- ^ output Mvar+                -> IO ()+gitCmdMergeBase localBranchName out = do+  mergeBase <- readProcessWithIgnoreExitCode "git" ["merge-base", "origin/master", localBranchName] ""+  putMVar out mergeBase  gitCmdRemoteName :: String         -- ^ local branch name               -> MVar String   -- ^ the output mvar
src/GitHUD/Git/Parse/Base.hs view
@@ -50,25 +50,22 @@ fillGitRemoteRepoState repoState@( GitRepoState { gitRemote = ""} ) = return repoState fillGitRemoteRepoState repoState = do   mvRemoteBranchName <- newEmptyMVar+  mvMergeBase <- newEmptyMVar   mvCommitsToPull <- newEmptyMVar   mvCommitsToPush <- newEmptyMVar-  mvMergeBranchCommitsToPull <- newEmptyMVar-  mvMergeBranchCommitsToPush <- newEmptyMVar    forkIO $ gitCmdRemoteBranchName (gitLocalBranch repoState) mvRemoteBranchName+  forkIO $ gitCmdMergeBase (gitLocalBranch repoState) mvMergeBase   remoteBranch <- removeEndingNewline <$> (takeMVar mvRemoteBranchName)+  mergeBase <- removeEndingNewline <$> (takeMVar mvMergeBase)    let fullRemoteBranchName = buildFullyQualifiedRemoteBranchName (gitRemote repoState) remoteBranch -  forkIO $ gitCmdRevToPush "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPush-  forkIO $ gitCmdRevToPull "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPull+  -- TODO: gbataille - Check for merge-base. If none, don't execute remote part   forkIO $ gitCmdRevToPush fullRemoteBranchName "HEAD" mvCommitsToPush   forkIO $ gitCmdRevToPull fullRemoteBranchName "HEAD" mvCommitsToPull -  mergeBranchCommitsToMergeStr <- takeMVar mvMergeBranchCommitsToPush-  let mergeBranchCommitsToMerge = getCount mergeBranchCommitsToMergeStr-  mergeBranchCommitsToRMasterStr <- takeMVar mvMergeBranchCommitsToPull-  let mergeBranchCommitsToRMaster = getCount mergeBranchCommitsToRMasterStr+  (mergeBranchToPull, mergeBranchToPush) <- getRemoteMasterMergeState mergeBase fullRemoteBranchName    commitsToPushStr <- takeMVar mvCommitsToPush   let commitsToPush = getCount commitsToPushStr@@ -79,6 +76,24 @@     gitRemoteTrackingBranch = remoteBranch     , gitCommitsToPull = commitsToPull     , gitCommitsToPush = commitsToPush-    , gitMergeBranchCommitsToPull = mergeBranchCommitsToRMaster-    , gitMergeBranchCommitsToPush = mergeBranchCommitsToMerge+    , gitMergeBranchCommitsToPull = mergeBranchToPull+    , gitMergeBranchCommitsToPush = mergeBranchToPush   }++getRemoteMasterMergeState :: String     -- ^ the merge base+                          -> String     -- ^ the fully qualified remote branch name+                          -> IO (Int, Int)    -- ^ tuple containing (to pull, to push)+getRemoteMasterMergeState "" _ = return (0, 0)+getRemoteMasterMergeState _ fullRemoteBranchName = do+  mvMergeBranchCommitsToPull <- newEmptyMVar+  mvMergeBranchCommitsToPush <- newEmptyMVar++  forkIO $ gitCmdRevToPush "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPush+  forkIO $ gitCmdRevToPull "origin/master" fullRemoteBranchName mvMergeBranchCommitsToPull++  mergeBranchCommitsToRMasterStr <- takeMVar mvMergeBranchCommitsToPull+  let mergeBranchCommitsToRMaster = getCount mergeBranchCommitsToRMasterStr+  mergeBranchCommitsToMergeStr <- takeMVar mvMergeBranchCommitsToPush+  let mergeBranchCommitsToMerge = getCount mergeBranchCommitsToMergeStr++  return (mergeBranchCommitsToRMaster, mergeBranchCommitsToMerge)