libgit2 / libgit2/libgit2sharp

Capture error details of "remote unpack failed"

Open
#2,105 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
3.5k
Forks
925
PR merge metrics
No merged PRs in 30d

Description

Reproduction steps
  • create Azure DevOps repo with security rules enabled
  • create commit which violates server rules. For example appsettings.json
{
    "Parameters": {
        "note": "this will trigger secret warning in the Azdo push, which is what I'm testing for",
        "secret": "opensesame"
    }
}

I configure the repo.Network.Push this way

var po = new PushOptions()
{
    CredentialsProvider = (_, _, _) => AzdoCreddentials,
                
    OnPushStatusError = (reason) =>
    {
        mainLogger.Log(LogLevel.Error, "Push failed with {}", reason.Message);
    },
};

Expected behavior

Make PushOptions.OnPushStatusError or another callback to receive details of remote unpack failure similar to git CLI

Specifically error: remote unpack failed: error VS403654: The push was rejected because it contains one or more secrets. in the log below.

PS C:\Dev\dotnet-mirroring\sandbox\pavelsavara-runtime> git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 20 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 406 bytes | 406.00 KiB/s, done.
Total 3 (delta 1), reused 3 (delta 1), pack-reused 0 (from 0)
remote: Analyzing objects... (3/3) (27 ms)
remote: Validating commits... (1/1) done (0 ms)
remote: Checking for credentials and other secrets...  done (59 ms)
error: remote unpack failed: error VS403654: The push was rejected because it contains one or more secrets.
To https://dev.azure.com/dnceng/internal/_git/pavelsavara-runtime
 ! [remote rejected]         browser_firefox_shm -> browser_firefox_shm (VS403654: The push was rejected because it contains one or more secrets.

Resolve the following secrets before pushing again. For help, see https://aka.ms/1ESSecretScanning.
Actual behavior

LibGit2Sharp.LibGit2SharpException: unpacking the sent packfile failed on the remote with no more details

Version of LibGit2Sharp (release number or SHA1)

0.29.0

Operating system(s) tested; .NET runtime tested
  • windows 10
  • SDK 9.0.100-preview.1.24101.2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the PushOptions.OnPushStatusError callback and the remote unpack failure path described in the issue. Reproduce the Azure DevOps secret-scanning rejection and trace where the detailed remote message is lost. Done means callers can receive the remote unpack failure details, including the VS403654 message, rather than only the generic exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, git
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.