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 +1/−1
- src/GitHUD/Git/Command.hs +8/−0
- src/GitHUD/Git/Parse/Base.hs +25/−10
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)