libgit2 / libgit2/libgit2sharp

Using CherryPick with CommitOnSuccess = false

未关闭
#1,774 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 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

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 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

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。