Skip to content

Commit 4d13ef7

Browse files
committed
Merge remote-tracking branch 'upstream/master' into portable
2 parents d22ab08 + e656b51 commit 4d13ef7

File tree

9 files changed

+98
-50
lines changed

9 files changed

+98
-50
lines changed

CHANGES.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@
1010
- Windows (x86/amd64): <https://ci.appveyor.com/project/libgit2/libgit2sharp>
1111
- Linux/Mac OS X: <https://travis-ci.org/libgit2/libgit2sharp>
1212

13-
## v0.23 + 1
13+
## v0.24 + 1
1414

1515
### Additions
1616

1717
### Changes
1818

1919
### Fixes
2020

21+
## v0.24 - ([diff](https://github.com/libgit2/libgit2sharp/compare/v0.23..v0.24))
22+
23+
This is the last release before a moving to .NET Core compatible library.
24+
25+
It will be the last supported release with the prior architecture; as a
26+
result, this release is primarily bugfixes and does not include major new
27+
APIs.
28+
2129
## v0.23 - ([diff](https://github.com/libgit2/libgit2sharp/compare/v0.22..v0.23))
2230

2331
### Additions

LibGit2Sharp.Tests/CheckoutFixture.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void CanCheckoutAnExistingBranchByName(string branchName)
9797

9898
[Theory]
9999
[InlineData("6dcf9bf", true, "6dcf9bf")]
100-
[InlineData("refs/tags/lw", true, "refs/tags/lw")]
100+
[InlineData("refs/tags/lw", true, "lw")]
101101
[InlineData("HEAD~2", true, "HEAD~2")]
102102
[InlineData("6dcf9bf", false, "6dcf9bf7541ee10456529833502442f385010c3d")]
103103
[InlineData("refs/tags/lw", false, "e90810b8df3e80c413d903f631643c716887138d")]
@@ -748,7 +748,7 @@ public void CheckingOutABranchDoesNotAlterBinaryFiles()
748748

749749
[Theory]
750750
[InlineData("a447ba2ca8")]
751-
[InlineData("refs/tags/lw")]
751+
[InlineData("lw")]
752752
[InlineData("e90810^{}")]
753753
public void CheckoutFromDetachedHead(string commitPointer)
754754
{

LibGit2Sharp.Tests/OdbBackendFixture.cs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -90,37 +90,46 @@ public void CanGeneratePredictableObjectShasWithAProvidedBackend()
9090
[Fact]
9191
public void CanRetrieveObjectsThroughOddSizedShortShas()
9292
{
93-
string repoPath = InitNewRepository();
94-
95-
using (var repo = new Repository(repoPath))
93+
try
9694
{
97-
var backend = new MockOdbBackend();
98-
repo.ObjectDatabase.AddBackend(backend, priority: 5);
95+
GlobalSettings.SetStrictHashVerification(false);
9996

100-
AddCommitToRepo(repo);
97+
string repoPath = InitNewRepository();
10198

102-
var blob1 = repo.Lookup<Blob>("9daeaf");
103-
Assert.NotNull(blob1);
99+
using (var repo = new Repository(repoPath))
100+
{
101+
var backend = new MockOdbBackend();
102+
repo.ObjectDatabase.AddBackend(backend, priority: 5);
104103

105-
const string dummy = "dummy\n";
104+
AddCommitToRepo(repo);
106105

107-
// Inserts a fake blob with a similarly prefixed sha
108-
var fakeId = new ObjectId("9daeaf0000000000000000000000000000000000");
109-
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(dummy)))
110-
{
111-
Assert.Equal(0, backend.Write(fakeId, ms, dummy.Length, ObjectType.Blob));
112-
}
106+
var blob1 = repo.Lookup<Blob>("9daeaf");
107+
Assert.NotNull(blob1);
108+
109+
const string dummy = "dummy\n";
110+
111+
// Inserts a fake blob with a similarly prefixed sha
112+
var fakeId = new ObjectId("9daeaf0000000000000000000000000000000000");
113+
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(dummy)))
114+
{
115+
Assert.Equal(0, backend.Write(fakeId, ms, dummy.Length, ObjectType.Blob));
116+
}
113117

114-
var blob2 = repo.Lookup<Blob>(fakeId);
115-
Assert.NotNull(blob2);
118+
var blob2 = repo.Lookup<Blob>(fakeId);
119+
Assert.NotNull(blob2);
116120

117-
Assert.Throws<AmbiguousSpecificationException>(() => repo.Lookup<Blob>("9daeaf"));
121+
Assert.Throws<AmbiguousSpecificationException>(() => repo.Lookup<Blob>("9daeaf"));
118122

119-
var newBlob1 = repo.Lookup("9daeafb");
120-
var newBlob2 = repo.Lookup("9daeaf0");
123+
var newBlob1 = repo.Lookup("9daeafb");
124+
var newBlob2 = repo.Lookup("9daeaf0");
121125

122-
Assert.Equal(blob1, newBlob1);
123-
Assert.Equal(blob2, newBlob2);
126+
Assert.Equal(blob1, newBlob1);
127+
Assert.Equal(blob2, newBlob2);
128+
}
129+
}
130+
finally
131+
{
132+
GlobalSettings.SetStrictHashVerification(true);
124133
}
125134
}
126135

LibGit2Sharp/Core/GitErrorCategory.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ internal enum GitErrorCategory
3434
Describe,
3535
Rebase,
3636
Filesystem,
37-
Patch
37+
Patch,
38+
Worktree,
39+
Sha1
3840
}
3941
}

LibGit2Sharp/Core/GitErrorCode.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,5 +125,15 @@ internal enum GitErrorCode
125125
/// There are no more entries left to iterate.
126126
/// </summary>
127127
IterOver = -31,
128+
129+
/// <summary>
130+
/// Internal-only.
131+
/// </summary>
132+
Retry = -32,
133+
134+
/// <summary>
135+
/// A retrieved object did not match its expected ID.
136+
/// </summary>
137+
Mismatch = -33,
128138
}
129139
}

LibGit2Sharp/Core/NativeMethods.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,9 @@ private static extern unsafe int git_filter_unregister(
645645
private static unsafe extern int git_libgit2_opts(int option, uint level,
646646
[CustomMarshaler(typeof(StrictUtf8Marshaler), typeof(string))] byte* path);
647647

648+
// git_libgit2_opts(GIT_OPT_ENABLE_*, int enabled)
649+
[DllImport(libgit2, CallingConvention = CallingConvention.Cdecl)]
650+
internal static extern int git_libgit2_opts(int option, int enabled);
648651
#endregion
649652

650653
[DllImport(libgit2)]

LibGit2Sharp/Core/Proxy.cs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3350,25 +3350,31 @@ public static BuiltInFeatures git_libgit2_features()
33503350
}
33513351

33523352
// C# equivalent of libgit2's git_libgit2_opt_t
3353-
private enum LibGitOption
3354-
{
3355-
GetMWindowSize, // GIT_OPT_GET_MWINDOW_SIZE
3356-
SetMWindowSize, // GIT_OPT_SET_MWINDOW_SIZE
3357-
GetMWindowMappedLimit, // GIT_OPT_GET_MWINDOW_MAPPED_LIMIT
3358-
SetMWindowMappedLimit, // GIT_OPT_SET_MWINDOW_MAPPED_LIMIT
3359-
GetSearchPath, // GIT_OPT_GET_SEARCH_PATH
3360-
SetSearchPath, // GIT_OPT_SET_SEARCH_PATH
3361-
SetCacheObjectLimit, // GIT_OPT_SET_CACHE_OBJECT_LIMIT
3362-
SetCacheMaxSize, // GIT_OPT_SET_CACHE_MAX_SIZE
3363-
EnableCaching, // GIT_OPT_ENABLE_CACHING
3364-
GetCachedMemory, // GIT_OPT_GET_CACHED_MEMORY
3365-
GetTemplatePath, // GIT_OPT_GET_TEMPLATE_PATH
3366-
SetTemplatePath, // GIT_OPT_SET_TEMPLATE_PATH
3367-
SetSslCertLocations, // GIT_OPT_SET_SSL_CERT_LOCATIONS
3368-
SetUserAgent, // GIT_OPT_SET_USER_AGENT
3369-
EnableStrictObjectCreation, // GIT_OPT_ENABLE_STRICT_OBJECT_CREATION
3370-
SetSslCiphers, // GIT_OPT_SET_SSL_CIPHERS
3371-
GetUserAgent, // GIT_OPT_GET_USER_AGENT
3353+
private enum LibGit2Option
3354+
{
3355+
GetMWindowSize, // GIT_OPT_GET_MWINDOW_SIZE
3356+
SetMWindowSize, // GIT_OPT_SET_MWINDOW_SIZE
3357+
GetMWindowMappedLimit, // GIT_OPT_GET_MWINDOW_MAPPED_LIMIT
3358+
SetMWindowMappedLimit, // GIT_OPT_SET_MWINDOW_MAPPED_LIMIT
3359+
GetSearchPath, // GIT_OPT_GET_SEARCH_PATH
3360+
SetSearchPath, // GIT_OPT_SET_SEARCH_PATH
3361+
SetCacheObjectLimit, // GIT_OPT_SET_CACHE_OBJECT_LIMIT
3362+
SetCacheMaxSize, // GIT_OPT_SET_CACHE_MAX_SIZE
3363+
EnableCaching, // GIT_OPT_ENABLE_CACHING
3364+
GetCachedMemory, // GIT_OPT_GET_CACHED_MEMORY
3365+
GetTemplatePath, // GIT_OPT_GET_TEMPLATE_PATH
3366+
SetTemplatePath, // GIT_OPT_SET_TEMPLATE_PATH
3367+
SetSslCertLocations, // GIT_OPT_SET_SSL_CERT_LOCATIONS
3368+
SetUserAgent, // GIT_OPT_SET_USER_AGENT
3369+
EnableStrictObjectCreation, // GIT_OPT_ENABLE_STRICT_OBJECT_CREATION
3370+
EnableStrictSymbolicRefCreation, // GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION
3371+
SetSslCiphers, // GIT_OPT_SET_SSL_CIPHERS
3372+
GetUserAgent, // GIT_OPT_GET_USER_AGENT
3373+
EnableOfsDelta, // GIT_OPT_ENABLE_OFS_DELTA
3374+
EnableFsyncGitdir, // GIT_OPT_ENABLE_FSYNC_GITDIR
3375+
GetWindowsSharemode, // GIT_OPT_GET_WINDOWS_SHAREMODE
3376+
SetWindowsSharemode, // GIT_OPT_SET_WINDOWS_SHAREMODE
3377+
EnableStrictHashVerification, // GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION
33723378
}
33733379

33743380
/// <summary>
@@ -3384,7 +3390,7 @@ public static string git_libgit2_opts_get_search_path(ConfigurationLevel level)
33843390

33853391
using (var buf = new GitBuf())
33863392
{
3387-
var res = NativeMethods.git_libgit2_opts((int)LibGitOption.GetSearchPath, (uint)level, buf);
3393+
var res = NativeMethods.git_libgit2_opts((int)LibGit2Option.GetSearchPath, (uint)level, buf);
33883394
Ensure.ZeroResult(res);
33893395

33903396
path = LaxUtf8Marshaler.FromNative(buf.ptr) ?? string.Empty;
@@ -3393,6 +3399,11 @@ public static string git_libgit2_opts_get_search_path(ConfigurationLevel level)
33933399
return path;
33943400
}
33953401

3402+
public static void git_libgit2_opts_enable_strict_hash_verification(bool enabled)
3403+
{
3404+
NativeMethods.git_libgit2_opts((int)LibGit2Option.EnableStrictHashVerification, enabled ? 1 : 0);
3405+
}
3406+
33963407
/// <summary>
33973408
/// Set the path(s) under which libgit2 searches for the configuration file of a given level.
33983409
/// </summary>
@@ -3403,7 +3414,7 @@ public static string git_libgit2_opts_get_search_path(ConfigurationLevel level)
34033414
/// </param>
34043415
public static void git_libgit2_opts_set_search_path(ConfigurationLevel level, string path)
34053416
{
3406-
var res = NativeMethods.git_libgit2_opts((int)LibGitOption.SetSearchPath, (uint)level, path);
3417+
var res = NativeMethods.git_libgit2_opts((int)LibGit2Option.SetSearchPath, (uint)level, path);
34073418
Ensure.ZeroResult(res);
34083419
}
34093420

LibGit2Sharp/GlobalSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,5 +324,10 @@ public static void SetConfigSearchPaths(ConfigurationLevel level, params string[
324324
var pathString = (paths == null) ? null : string.Join(Path.PathSeparator.ToString(), paths);
325325
Proxy.git_libgit2_opts_set_search_path(level, pathString);
326326
}
327+
328+
public static void SetStrictHashVerification(bool enabled)
329+
{
330+
Proxy.git_libgit2_opts_enable_strict_hash_verification(enabled);
331+
}
327332
}
328333
}

LibGit2Sharp/LibGit2Sharp.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<GenerateDocumentationFile>true</GenerateDocumentationFile>
55
<Description>LibGit2Sharp brings all the might and speed of libgit2, a native Git implementation, to the managed world of .Net and Mono.</Description>
66
<Company>LibGit2Sharp contributors</Company>
7-
<PackageTags>libgit2 git wrapper bindings API dvcs vcs</PackageTags>
7+
<PackageTags>libgit2 git</PackageTags>
88
<PackageProjectUrl>https://github.com/libgit2/libgit2sharp/</PackageProjectUrl>
99
<Authors>LibGit2Sharp contributors</Authors>
1010

@@ -31,7 +31,7 @@
3131
<ProjectReference Include="..\CodeGenerationAttributes\CodeGenerationAttributes.csproj" PrivateAssets="all" />
3232
</ItemGroup>
3333
<ItemGroup>
34-
<PackageReference Include="LibGit2Sharp.NativeBinaries" Version="[1.0.165]" PrivateAssets="contentFiles" />
34+
<PackageReference Include="LibGit2Sharp.NativeBinaries" Version="[1.0.185]" PrivateAssets="contentFiles" />
3535
<PackageReference Include="SourceLink.Create.GitHub" Version="2.0.2" PrivateAssets="all" />
3636
<DotNetCliToolReference Include="dotnet-sourcelink-git" Version="2.0.2" />
3737

@@ -52,4 +52,4 @@
5252
<PackageLicenseUrl>https://github.com/libgit2/libgit2sharp/raw/$(GitCommitIdShort)/LICENSE.md</PackageLicenseUrl>
5353
</PropertyGroup>
5454
</Target>
55-
</Project>
55+
</Project>

0 commit comments

Comments
 (0)