libgit2 / libgit2/libgit2sharp
Using CherryPick with CommitOnSuccess = false
还没有人认领这个 Issue。
- 主要语言
- C#
- 星标
- 3.5k
- 派生
- 925
- PR 合并指标
- 30 天内没有已合并 PR
描述
Reproduction steps
using (var repo = new Repository("path\to\repo"))
{
var commit1 = repo.Lookup<Commit>("a05b011d89bbd5c9117840b71718ce2a1ee00376");
var masterTb = repo.Branches["refs/remotes/origin/release/1.0"];
var master = repo.CreateBranch("release/1.0", masterTb.Tip);
var updateMb = repo.Branches.Update(master,
b => b.TrackedBranch = masterTb.CanonicalName);
Commands.Checkout(repo, updateMb);
var result = repo.CherryPick(commit1, commit1.Author, new CherryPickOptions { CommitOnSuccess = false});
}
If i use CherryPick with CommitOnSuccess = false repo is left in cherry-pick state. For rebase there is abort and continue commands, but for cherry pick there is non.
I checked up code and if i use CommitOnSuccess = true there is git_repository_state_cleanup which clean up chery-pick state.
Is this a bug or there is some commands to reset state?
Expected behavior
cherry picked and exit cherry-pick state
Actual behavior
left in cherry-pick state
Version of LibGit2Sharp (release number or SHA1)
0.26.2
Operating system(s) tested; .NET runtime tested
Windows 10 Version 2004 10.0.19041
.Net Core 3.1
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 Repository.CherryPick API 及其对 CherryPickOptions 的处理入手;将 CommitOnSuccess=false 路径与 rebase abort/continue 的行为以及报告中描述的 git_repository_state_cleanup 调用进行比较。针对 LibGit2Sharp 0.26.2 重现所提供的代码片段;当 repository 不再保持在 cherry-pick 状态,或已记录受支持的 reset 行为时,即视为完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp, git
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 38/100