Skip to content

Commit 7d60d53

Browse files
committed
add get_branch_upstream_merge helper
1 parent 687d429 commit 7d60d53

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

asyncgit/src/sync/branch/mod.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,25 @@ pub fn get_branch_remote(
243243
}
244244
}
245245

246+
/// Retrieve the upstream merge of a local `branch`,
247+
/// configured in "branch.*.merge"
248+
///
249+
/// For details check git2 `branch_upstream_merge`
250+
pub fn get_branch_upstream_merge(
251+
repo_path: &RepoPath,
252+
branch: &str,
253+
) -> Result<Option<String>> {
254+
let repo = repo(repo_path)?;
255+
let branch = repo.find_branch(branch, BranchType::Local)?;
256+
let reference = bytes2string(branch.get().name_bytes())?;
257+
let remote_name = repo.branch_upstream_merge(&reference).ok();
258+
if let Some(remote_name) = remote_name {
259+
Ok(Some(bytes2string(remote_name.as_ref())?))
260+
} else {
261+
Ok(None)
262+
}
263+
}
264+
246265
/// returns whether the pull merge strategy is set to rebase
247266
pub fn config_is_pull_rebase(repo_path: &RepoPath) -> Result<bool> {
248267
let repo = repo(repo_path)?;

asyncgit/src/sync/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub use blame::{blame_file, BlameHunk, FileBlame};
3939
pub use branch::{
4040
branch_compare_upstream, checkout_branch, checkout_commit,
4141
config_is_pull_rebase, create_branch, delete_branch,
42-
get_branch_remote, get_branches_info,
42+
get_branch_remote, get_branches_info, get_branch_upstream_merge,
4343
merge_commit::merge_upstream_commit,
4444
merge_ff::branch_merge_upstream_fastforward,
4545
merge_rebase::merge_upstream_rebase, rename::rename_branch,

0 commit comments

Comments
 (0)