libgit2 / libgit2/libgit2sharp
Pushing new branches does not set up tracking branch completely
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 3.5k
- Forks
- 925
- PR merge metrics
- No merged PRs in 30d
Description
When you push a local branch that does not exist on the remote (using the refspec overload), libgit2sharp automatically creates a tracking branch, but it does not set up the config for the local branch
i.e. the following config entries are missing:
branch.(branch_name).remote
branch.(branch_name).merge
Currently, I push a new branch like as follows:
string refspec = string.Format("{0}:{1}",
currentBranch.CanonicalName, currentBranch.CanonicalName);
repo.Network.Push(remote, refspec, handler, credentials);
repo.Branches.Update(repo.Head, delegate(BranchUpdater updater)
{
updater.Remote = remote.Name;
updater.UpstreamBranch = repo.Head.CanonicalName;
});
I feel like this should be simplified. Either by doing the BranchUpdater stuff in Push(), or by extending the Push(Branch, ...) overload to let it accept non-tracking branches and do the whole process.
I also did not find a test fixture covering that feature, so the intended behaviour should at least be specified.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the Push overloads and the BranchUpdater usage shown in the issue, then inspect existing push test fixtures because the issue says none cover this behavior. Done means the supported new-branch push path establishes the branch.remote and branch.merge configuration, with a test specifying the intended behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, git
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100