From 9a088523037567dd5a336c31e8b80d686183e4cd Mon Sep 17 00:00:00 2001 From: Paul Betts Date: Mon, 8 Aug 2011 15:56:58 -0700 Subject: [PATCH 01/28] All strings passed down to libgit2 should be UTF-8 --- LibGit2Sharp/Core/NativeMethods.cs | 96 ++++++++++++++++++++++++------ LibGit2Sharp/Core/UTF8Marshaler.cs | 73 +++++++++++++++++++++++ LibGit2Sharp/LibGit2Sharp.csproj | 1 + LibGit2Sharp/Repository.cs | 18 +++++- 4 files changed, 167 insertions(+), 21 deletions(-) create mode 100644 LibGit2Sharp/Core/UTF8Marshaler.cs diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 1ecd08517..7e6aa227e 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -21,7 +21,16 @@ internal static class NativeMethods public static extern IntPtr git_commit_committer(IntPtr commit); [DllImport(libgit2)] - public static extern int git_commit_create(out GitOid oid, RepositorySafeHandle repo, string updateRef, GitSignature author, GitSignature committer, string message, IntPtr tree, int parentCount, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 7)] [In] IntPtr[] parents); + public static extern int git_commit_create( + out GitOid oid, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string updateRef, + GitSignature author, + GitSignature committer, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string message, + IntPtr tree, + int parentCount, + [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 7)] [In] IntPtr[] parents); [DllImport(libgit2)] public static extern IntPtr git_commit_message(IntPtr commit); @@ -42,13 +51,18 @@ internal static class NativeMethods public static extern IntPtr git_commit_tree_oid(IntPtr commit); [DllImport(libgit2)] - public static extern int git_index_add(IndexSafeHandle index, string path, int stage = 0); + public static extern int git_index_add( + IndexSafeHandle index, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path, + int stage = 0); [DllImport(libgit2)] public static extern uint git_index_entrycount(IndexSafeHandle index); [DllImport(libgit2)] - public static extern int git_index_find(IndexSafeHandle index, string path); + public static extern int git_index_find( + IndexSafeHandle index, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path); [DllImport(libgit2)] public static extern void git_index_free(IntPtr index); @@ -91,16 +105,29 @@ internal static class NativeMethods public static extern int git_oid_cmp(ref GitOid a, ref GitOid b); [DllImport(libgit2)] - public static extern int git_reference_create_oid(out IntPtr reference, RepositorySafeHandle repo, string name, ref GitOid oid, bool force); + public static extern int git_reference_create_oid( + out IntPtr reference, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, + ref GitOid oid, + bool force); [DllImport(libgit2)] - public static extern int git_reference_create_symbolic(out IntPtr reference, RepositorySafeHandle repo, string name, string target, bool force); + public static extern int git_reference_create_symbolic( + out IntPtr reference, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string target, + bool force); [DllImport(libgit2)] public static extern int git_reference_delete(IntPtr reference); [DllImport(libgit2)] - public static extern int git_reference_lookup(out IntPtr reference, RepositorySafeHandle repo, string name); + public static extern int git_reference_lookup( + out IntPtr reference, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name); [DllImport(libgit2)] public static extern IntPtr git_reference_name(IntPtr reference); @@ -109,7 +136,10 @@ internal static class NativeMethods public static extern IntPtr git_reference_oid(IntPtr reference); [DllImport(libgit2)] - public static extern int git_reference_rename(IntPtr reference, string newName, bool force); + public static extern int git_reference_rename( + IntPtr reference, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string newName, + bool force); [DllImport(libgit2)] public static extern int git_reference_resolve(out IntPtr resolvedReference, IntPtr reference); @@ -118,7 +148,9 @@ internal static class NativeMethods public static extern int git_reference_set_oid(IntPtr reference, ref GitOid id); [DllImport(libgit2)] - public static extern int git_reference_set_target(IntPtr reference, string target); + public static extern int git_reference_set_target( + IntPtr reference, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string target); [DllImport(libgit2)] public static extern IntPtr git_reference_target(IntPtr reference); @@ -130,9 +162,12 @@ internal static class NativeMethods public static extern IntPtr git_repository_database(RepositorySafeHandle repository); [DllImport(libgit2)] - public static extern int git_repository_discover(StringBuilder repository_path, int size, string start_path, - [MarshalAs(UnmanagedType.Bool)] bool across_fs, - string ceiling_dirs); + public static extern int git_repository_discover( + byte[] repository_path, // NB: This is more properly a StringBuilder, but it's UTF8 + int size, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string start_path, + [MarshalAs(UnmanagedType.Bool)] bool across_fs, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string ceiling_dirs); [DllImport(libgit2)] public static extern void git_repository_free(IntPtr repository); @@ -144,7 +179,10 @@ public static extern int git_repository_discover(StringBuilder repository_path, public static extern int git_repository_index(out IndexSafeHandle index, RepositorySafeHandle repo); [DllImport(libgit2)] - public static extern int git_repository_init(out RepositorySafeHandle repository, string path, [MarshalAs(UnmanagedType.Bool)] bool isBare); + public static extern int git_repository_init( + out RepositorySafeHandle repository, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path, + [MarshalAs(UnmanagedType.Bool)] bool isBare); [DllImport(libgit2)] [return: MarshalAs(UnmanagedType.Bool)] @@ -154,7 +192,9 @@ public static extern int git_repository_discover(StringBuilder repository_path, public static extern int git_repository_is_empty(RepositorySafeHandle repo); [DllImport(libgit2)] - public static extern int git_repository_open(out RepositorySafeHandle repository, string path); + public static extern int git_repository_open( + out RepositorySafeHandle repository, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path); [DllImport(libgit2)] public static extern IntPtr git_repository_path(RepositorySafeHandle repository, GitRepositoryPathId pathIdentifier); @@ -184,16 +224,34 @@ public static extern int git_repository_discover(StringBuilder repository_path, public static extern void git_signature_free(IntPtr signature); [DllImport(libgit2)] - public static extern IntPtr git_signature_new(string name, string email, long time, int offset); + public static extern IntPtr git_signature_new( + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string email, + long time, + int offset); [DllImport(libgit2)] - public static extern int git_tag_create(out GitOid oid, RepositorySafeHandle repo, string name, IntPtr target, GitSignature signature, string message, bool force); + public static extern int git_tag_create( + out GitOid oid, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, + IntPtr target, + GitSignature signature, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string message, + bool force); [DllImport(libgit2)] - public static extern int git_tag_create_lightweight(out GitOid oid, RepositorySafeHandle repo, string name, IntPtr target, bool force); + public static extern int git_tag_create_lightweight( + out GitOid oid, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, + IntPtr target, + bool force); [DllImport(libgit2)] - public static extern int git_tag_delete(RepositorySafeHandle repo, string tagName); + public static extern int git_tag_delete( + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string tagName); [DllImport(libgit2)] public static extern IntPtr git_tag_message(IntPtr tag); @@ -220,7 +278,9 @@ public static extern int git_repository_discover(StringBuilder repository_path, public static extern IntPtr git_tree_entry_byindex(IntPtr tree, uint idx); [DllImport(libgit2)] - public static extern IntPtr git_tree_entry_byname(IntPtr tree, string filename); + public static extern IntPtr git_tree_entry_byname( + IntPtr tree, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string filename); [DllImport(libgit2)] public static extern IntPtr git_tree_entry_id(IntPtr entry); diff --git a/LibGit2Sharp/Core/UTF8Marshaler.cs b/LibGit2Sharp/Core/UTF8Marshaler.cs new file mode 100644 index 000000000..cdca8e987 --- /dev/null +++ b/LibGit2Sharp/Core/UTF8Marshaler.cs @@ -0,0 +1,73 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; + +namespace LibGit2Sharp.Core +{ + internal class UTF8Marshaler : ICustomMarshaler + { + static UTF8Marshaler static_instance; + + public unsafe IntPtr MarshalManagedToNative(object managedObj) + { + if (managedObj == null) + return IntPtr.Zero; + if (!(managedObj is string)) + throw new MarshalDirectiveException( + "UTF8Marshaler must be used on a string."); + + // not null terminated + byte[] strbuf = Encoding.UTF8.GetBytes((string)managedObj); + IntPtr buffer = Marshal.AllocHGlobal(strbuf.Length + 1); + Marshal.Copy(strbuf, 0, buffer, strbuf.Length); + + // write the terminating null + byte* pBuf = (byte*) buffer; + pBuf[strbuf.Length] = 0; + + return buffer; + } + + public unsafe object MarshalNativeToManaged(IntPtr pNativeData) + { + byte* walk = (byte*)pNativeData; + + // find the end of the string + while (*walk != 0) + { + walk++; + } + int length = (int)(walk - (byte*)pNativeData); + + // should not be null terminated + byte[] strbuf = new byte[length - 1]; + // skip the trailing null + Marshal.Copy((IntPtr)pNativeData, strbuf, 0, length - 1); + string data = Encoding.UTF8.GetString(strbuf); + return data; + } + + public void CleanUpNativeData(IntPtr pNativeData) + { + Marshal.FreeHGlobal(pNativeData); + } + + public void CleanUpManagedData(object managedObj) + { + } + + public int GetNativeDataSize() + { + return -1; + } + + public static ICustomMarshaler GetInstance(string cookie) + { + if (static_instance == null) + { + return static_instance = new UTF8Marshaler(); + } + return static_instance; + } + } +} \ No newline at end of file diff --git a/LibGit2Sharp/LibGit2Sharp.csproj b/LibGit2Sharp/LibGit2Sharp.csproj index e38804e66..2fd57bd45 100644 --- a/LibGit2Sharp/LibGit2Sharp.csproj +++ b/LibGit2Sharp/LibGit2Sharp.csproj @@ -71,6 +71,7 @@ + diff --git a/LibGit2Sharp/Repository.cs b/LibGit2Sharp/Repository.cs index da1111d29..3c27d7c3a 100644 --- a/LibGit2Sharp/Repository.cs +++ b/LibGit2Sharp/Repository.cs @@ -269,12 +269,24 @@ private static bool IsReferencePeelable(Reference reference) /// The path to the git repository. public static string Discover(string startingPath) { - var buffer = new StringBuilder(4096); + var buffer = new byte[4096]; - int result = NativeMethods.git_repository_discover(buffer, buffer.Capacity, PosixPathHelper.ToPosix(startingPath), false, null); + int result = NativeMethods.git_repository_discover(buffer, buffer.Length, PosixPathHelper.ToPosix(startingPath), false, null); Ensure.Success(result); - return PosixPathHelper.ToNative(buffer.ToString()); + int nullTerminator; + for (nullTerminator = 0; nullTerminator < buffer.Length; nullTerminator++ ) + { + if (buffer[nullTerminator] == 0) + break; + } + + if (nullTerminator == 0) + { + return null; + } + + return PosixPathHelper.ToNative(Encoding.UTF8.GetString(buffer, 0, nullTerminator)); } } } \ No newline at end of file From 90f0d0504300ed47fb25dde119a7400f7b6b2fd4 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Sun, 11 Sep 2011 15:59:39 +0200 Subject: [PATCH 02/28] Straighten collection assertions to take into account the order of items --- LibGit2Sharp.Tests/CommitFixture.cs | 6 +++--- LibGit2Sharp.Tests/TreeFixture.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index 75da6b09d..103d4e4e8 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -192,7 +192,7 @@ public void CanEnumerateUsingTwoHeadsAsBoundaries() var commits = repo.Commits.QueryBy(new Filter { Since = "HEAD", Until = "refs/heads/br2" }); IEnumerable abbrevShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - CollectionAssert.AreEquivalent(new[] { "4c062a6", "be3563a" }, abbrevShas); + CollectionAssert.AreEqual(new[] { "4c062a6", "be3563a" }, abbrevShas); } } @@ -204,7 +204,7 @@ public void CanEnumerateUsingOneHeadAsBoundaries() var commits = repo.Commits.QueryBy(new Filter { Until = "refs/heads/br2" }); IEnumerable abbrevShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - CollectionAssert.AreEquivalent(new[] { "4c062a6", "be3563a" }, abbrevShas); + CollectionAssert.AreEqual(new[] { "4c062a6", "be3563a" }, abbrevShas); } } @@ -216,7 +216,7 @@ public void CanEnumerateUsingTwoAbbreviatedShasAsBoundaries() var commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce", Until = "4a202b3" }); IEnumerable abbrevShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - CollectionAssert.AreEquivalent(new[] { "a4a7dce", "c47800c", "9fd738e" }, abbrevShas); + CollectionAssert.AreEqual(new[] { "a4a7dce", "c47800c", "9fd738e" }, abbrevShas); } } diff --git a/LibGit2Sharp.Tests/TreeFixture.cs b/LibGit2Sharp.Tests/TreeFixture.cs index 4774b05df..3622898fc 100755 --- a/LibGit2Sharp.Tests/TreeFixture.cs +++ b/LibGit2Sharp.Tests/TreeFixture.cs @@ -76,7 +76,7 @@ public void CanEnumerateTreeEntries() var tree = repo.Lookup(sha); tree.Count().ShouldEqual(tree.Count); - CollectionAssert.AreEquivalent(new[] {"1", "README", "branch_file.txt", "new.txt"}, tree.Select(te => te.Name).ToArray()); + CollectionAssert.AreEqual(new[] {"1", "README", "branch_file.txt", "new.txt"}, tree.Select(te => te.Name).ToArray()); } } From 5c5441a04533af4d58074a37b7770e860f0d1496 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Mon, 12 Sep 2011 14:54:34 +0200 Subject: [PATCH 03/28] Add ToString() override to Tag --- LibGit2Sharp/Tag.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/LibGit2Sharp/Tag.cs b/LibGit2Sharp/Tag.cs index 7bf1dbb78..c86a0c823 100644 --- a/LibGit2Sharp/Tag.cs +++ b/LibGit2Sharp/Tag.cs @@ -54,6 +54,15 @@ private static string Shorten(string tagName) return tagName.Substring("refs/tags/".Length); } + /// + /// Returns the , a representation of the current . + /// + /// The that represents the current . + public override string ToString() + { + return CanonicalName; + } + /// /// Determines whether the specified is equal to the current . /// From 397f3b966967424807c8e523adc1732b67dee8c7 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Mon, 12 Sep 2011 15:21:43 +0200 Subject: [PATCH 04/28] Fix error message formatting in a test helper --- LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs b/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs index c6576923c..154ee1757 100644 --- a/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs +++ b/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs @@ -13,7 +13,7 @@ public SelfCleaningDirectory(string path) { if (Directory.Exists(path)) { - throw new InvalidOperationException("Directory '{0}' already exists."); + throw new InvalidOperationException(string.Format("Directory '{0}' already exists.", path)); } DirectoryPath = path; @@ -30,7 +30,7 @@ public void Dispose() { if (!Directory.Exists(DirectoryPath)) { - throw new InvalidOperationException("Directory '{0}' doesn't exist any longer."); + throw new InvalidOperationException(string.Format("Directory '{0}' doesn't exist any longer.", DirectoryPath)); } DirectoryHelper.DeleteDirectory(DirectoryPath); From 5aea296782ad3186338758b5693a1745bbb52d47 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Mon, 12 Sep 2011 15:27:47 +0200 Subject: [PATCH 05/28] Replace corrupted test reference with on demand creation of it --- LibGit2Sharp.Tests/BranchFixture.cs | 2 +- LibGit2Sharp.Tests/CommitFixture.cs | 17 ++++++++++++++--- LibGit2Sharp.Tests/ReferenceFixture.cs | 7 +++++-- LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs | 11 ++++++++++- Resources/testrepo.git/refs/heads/deadbeef | 1 - 5 files changed, 30 insertions(+), 8 deletions(-) delete mode 100644 Resources/testrepo.git/refs/heads/deadbeef diff --git a/LibGit2Sharp.Tests/BranchFixture.cs b/LibGit2Sharp.Tests/BranchFixture.cs index 2d6e7506c..b42c2eece 100644 --- a/LibGit2Sharp.Tests/BranchFixture.cs +++ b/LibGit2Sharp.Tests/BranchFixture.cs @@ -101,7 +101,7 @@ public void CanListAllBranches() Assert.Contains(r.Name, expectedBranches); } - repo.Branches.Count().ShouldEqual(6); + repo.Branches.Count().ShouldEqual(5); } } diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index 103d4e4e8..090dc3fd5 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -97,9 +97,20 @@ public void QueryingTheCommitHistoryWithUnknownShaOrInvalidReferenceThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha}).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef"}).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Branches["deadbeef"]}).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef" }).Count()); + } + } + + [Test] + public void QueryingTheCommitHistoryFromACorruptedReferenceThrows() + { + using (var path = new TemporaryCloneOfTestRepo()) + using (var repo = new Repository(path.RepositoryPath)) + { + CreateCorruptedDeadBeefHead(repo.Info.Path); + + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Branches["deadbeef"] }).Count()); Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Refs["refs/heads/deadbeef"] }).Count()); } } diff --git a/LibGit2Sharp.Tests/ReferenceFixture.cs b/LibGit2Sharp.Tests/ReferenceFixture.cs index b36234e81..0981d39f9 100644 --- a/LibGit2Sharp.Tests/ReferenceFixture.cs +++ b/LibGit2Sharp.Tests/ReferenceFixture.cs @@ -203,10 +203,13 @@ public void DeleteWithNullNameThrows() } [Test] - public void CanListAllReferences() + public void CanListAllReferencesEvenCorruptedOnes() { - using (var repo = new Repository(Constants.BareTestRepoPath)) + using (var path = new TemporaryCloneOfTestRepo()) + using (var repo = new Repository(path.RepositoryPath)) { + CreateCorruptedDeadBeefHead(repo.Info.Path); + foreach (var r in repo.Refs) { Assert.Contains(r.CanonicalName, expectedRefs); diff --git a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs index 9214552d6..8dfaae3d6 100644 --- a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs +++ b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs @@ -1,4 +1,6 @@ -using System.IO; +using System; +using System.IO; +using System.Text; namespace LibGit2Sharp.Tests.TestHelpers { @@ -28,5 +30,12 @@ private static void SetUpTestEnvironment() string tempDotGit = Path.Combine(Constants.StandardTestRepoWorkingDirPath, "dot_git"); Directory.Move(tempDotGit, Constants.StandardTestRepoPath); } + + protected void CreateCorruptedDeadBeefHead(string repoPath) + { + const string deadbeef = "deadbeef"; + string headPath = string.Format("{0}refs/heads/{1}", repoPath, deadbeef); + File.WriteAllText(headPath, string.Format("{0}{0}{0}{0}{0}\n", deadbeef)); + } } } diff --git a/Resources/testrepo.git/refs/heads/deadbeef b/Resources/testrepo.git/refs/heads/deadbeef deleted file mode 100644 index aa3a3b099..000000000 --- a/Resources/testrepo.git/refs/heads/deadbeef +++ /dev/null @@ -1 +0,0 @@ -deadbeefdeadbeefdeadbeefdeadbeefdeadbeef From e44e2c2902998569ec4b0eb3c541e1ef863aaa3f Mon Sep 17 00:00:00 2001 From: nulltoken Date: Mon, 12 Sep 2011 15:32:40 +0200 Subject: [PATCH 06/28] Improve implementation of commits enumeration/querying - can now enumerate from multiple starting points - automatically dereference objects to a commit object id --- LibGit2Sharp.Tests/CommitFixture.cs | 104 ++++++++++++++---- LibGit2Sharp/CommitCollection.cs | 162 +++++++++++++++++++++++----- LibGit2Sharp/Filter.cs | 14 ++- 3 files changed, 227 insertions(+), 53 deletions(-) diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index 090dc3fd5..7b1f99717 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -12,7 +12,7 @@ namespace LibGit2Sharp.Tests public class CommitFixture : BaseFixture { private const string sha = "8496071c1b46c854b31185ea97743be6a8774479"; - private readonly List expectedShas = new List {"a4a7d", "c4780", "9fd73", "4a202", "5b5b0", "84960"}; + private readonly List expectedShas = new List { "a4a7d", "c4780", "9fd73", "4a202", "5b5b0", "84960" }; [Test] public void CanCountCommits() @@ -93,12 +93,13 @@ public void CanEnumerateCommitsFromSha() } [Test] - public void QueryingTheCommitHistoryWithUnknownShaOrInvalidReferenceThrows() + public void QueryingTheCommitHistoryWithUnknownShaOrInvalidEntryPointThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha }).Count()); Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef" }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = null }).Count()); } } @@ -198,36 +199,97 @@ public void CanEnumerateCommitsWithTopoSorting() [Test] public void CanEnumerateUsingTwoHeadsAsBoundaries() { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var commits = repo.Commits.QueryBy(new Filter { Since = "HEAD", Until = "refs/heads/br2" }); - - IEnumerable abbrevShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - CollectionAssert.AreEqual(new[] { "4c062a6", "be3563a" }, abbrevShas); - } + AssertEnumerationOfCommits( + repo => new Filter { Since = "HEAD", Until = "refs/heads/br2" }, + new[] { "4c062a6", "be3563a" } + ); } [Test] public void CanEnumerateUsingOneHeadAsBoundaries() { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var commits = repo.Commits.QueryBy(new Filter { Until = "refs/heads/br2" }); - - IEnumerable abbrevShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - CollectionAssert.AreEqual(new[] { "4c062a6", "be3563a" }, abbrevShas); - } + AssertEnumerationOfCommits( + repo => new Filter { Until = "refs/heads/br2" }, + new[] { "4c062a6", "be3563a" } + ); } [Test] public void CanEnumerateUsingTwoAbbreviatedShasAsBoundaries() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = "a4a7dce", Until = "4a202b3" }, + new[] { "a4a7dce", "c47800c", "9fd738e" } + ); + } + + [Test] + public void CanEnumerateCommitsFromTwoHeads() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = new[] { "refs/heads/br2", "refs/heads/master" } }, + new[] + { + "4c062a6", "a4a7dce", "be3563a", "c47800c", + "9fd738e", "4a202b3", "5b5b025", "8496071", + }); + } + + [Test] + public void CanEnumerateCommitsFromMixedStartingPoints() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = new object[] { repo.Branches["br2"], "refs/heads/master", new ObjectId("e90810b") } }, + new[] + { + "4c062a6", "e90810b", "6dcf9bf", "a4a7dce", + "be3563a", "c47800c", "9fd738e", "4a202b3", + "5b5b025", "8496071", + }); + } + + [Test] + public void CanEnumerateCommitsFromAnAnnotatedTag() + { + CanEnumerateCommitsFromATag(t => t); + } + + [Test] + public void CanEnumerateCommitsFromATagAnnotation() + { + CanEnumerateCommitsFromATag(t => t.Annotation); + } + + private static void CanEnumerateCommitsFromATag(Func transformer) + { + AssertEnumerationOfCommits( + repo => new Filter { Since = transformer(repo.Tags["test"]) }, + new[] { "e90810b", "6dcf9bf", } + ); + } + + [Test] + public void CanEnumerateAllCommits() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = repo.Refs }, + new[] + { + "4c062a6", "e90810b", "6dcf9bf", "a4a7dce", + "be3563a", "c47800c", "9fd738e", "4a202b3", + "41bc8c6", "5001298", "5b5b025", "8496071", + }); + } + + private static void AssertEnumerationOfCommits(Func filterBuilder, IEnumerable abbrevIds) { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce", Until = "4a202b3" }); + var commits = repo.Commits.QueryBy(filterBuilder(repo)); + + IEnumerable commitShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - IEnumerable abbrevShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - CollectionAssert.AreEqual(new[] { "a4a7dce", "c47800c", "9fd738e" }, abbrevShas); + CollectionAssert.AreEqual(abbrevIds, commitShas); } } @@ -250,9 +312,9 @@ public void CanReadCommitData() { var obj = repo.Lookup(sha); obj.ShouldNotBeNull(); - obj.GetType().ShouldEqual(typeof (Commit)); + obj.GetType().ShouldEqual(typeof(Commit)); - var commit = (Commit) obj; + var commit = (Commit)obj; commit.Message.ShouldEqual("testing\n"); commit.MessageShort.ShouldEqual("testing"); commit.Sha.ShouldEqual(sha); diff --git a/LibGit2Sharp/CommitCollection.cs b/LibGit2Sharp/CommitCollection.cs index d0301552d..baa11b004 100644 --- a/LibGit2Sharp/CommitCollection.cs +++ b/LibGit2Sharp/CommitCollection.cs @@ -13,8 +13,8 @@ namespace LibGit2Sharp public class CommitCollection : IQueryableCommitCollection { private readonly Repository repo; - private object includedIdentifier = "HEAD"; - private object excludedIdentifier; + private IList includedIdentifier = new List { "HEAD" }; + private IList excludedIdentifier = new List(); private readonly GitSortOptions sortOptions; /// @@ -54,7 +54,7 @@ public GitSortOptions SortedBy /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { - if ((repo.Info.IsEmpty) && PointsAtTheHead(includedIdentifier.ToString())) + if ((repo.Info.IsEmpty) && includedIdentifier.Any(o => PointsAtTheHead(o.ToString()))) // TODO: ToString() == fragile { return Enumerable.Empty().GetEnumerator(); } @@ -86,11 +86,36 @@ public ICommitCollection QueryBy(Filter filter) return new CommitCollection(repo, filter.SortBy) { - includedIdentifier = filter.Since, - excludedIdentifier = filter.Until + includedIdentifier = ToList(filter.Since), + excludedIdentifier = ToList(filter.Until) }; } + private static IList ToList(object obj) + { + var list = new List(); + + if (obj == null) + return list; + + var types = new[] + { + typeof (string), typeof (ObjectId), + typeof (Commit), typeof(TagAnnotation), + typeof (Tag), typeof (Branch), + typeof (Reference), typeof (DirectReference), typeof (SymbolicReference) + }; + + if (types.Contains(obj.GetType())) + { + list.Add(obj); + return list; + } + + list.AddRange(((IEnumerable)obj).Cast()); + return list; + } + private static bool PointsAtTheHead(string shaOrRefName) { return ("HEAD".Equals(shaOrRefName, StringComparison.Ordinal) || "refs/heads/master".Equals(shaOrRefName, StringComparison.Ordinal)); @@ -128,10 +153,10 @@ private static IntPtr[] BuildArrayFrom(ObjectSafeWrapper headPtr) { if (headPtr.ObjectPtr == IntPtr.Zero) { - return new IntPtr[]{}; + return new IntPtr[] { }; } - return new IntPtr[]{headPtr.ObjectPtr}; + return new IntPtr[] { headPtr.ObjectPtr }; } private ObjectSafeWrapper RetrieveHeadCommitPtr(Reference head) @@ -152,7 +177,7 @@ private class CommitEnumerator : IEnumerator private readonly RevWalkerSafeHandle handle; private ObjectId currentOid; - public CommitEnumerator(Repository repo, object includedIdentifier, object excludedIdentifier, GitSortOptions sortingStrategy) + public CommitEnumerator(Repository repo, IList includedIdentifier, IList excludedIdentifier, GitSortOptions sortingStrategy) { this.repo = repo; int res = NativeMethods.git_revwalk_new(out handle, repo.Handle); @@ -223,23 +248,33 @@ private void Dispose(bool disposing) handle.Dispose(); } - private void Push(object identifier) + private delegate int HidePushSignature(RevWalkerSafeHandle handle, ref GitOid oid); + + private void InternalHidePush(IList identifier, HidePushSignature hidePush) { - var oid = RetrieveCommitId(identifier).Oid; - int res = NativeMethods.git_revwalk_push(handle, ref oid); - Ensure.Success(res); + var oids = RetrieveCommitOids(identifier); + + foreach (var actedOn in oids) + { + var oid = actedOn.Oid; + int res = hidePush(handle, ref oid); + Ensure.Success(res); + } } - private void Hide(object identifier) + private void Push(IList identifier) + { + InternalHidePush(identifier, NativeMethods.git_revwalk_push); + } + + private void Hide(IList identifier) { if (identifier == null) { return; } - var oid = RetrieveCommitId(identifier).Oid; - int res = NativeMethods.git_revwalk_hide(handle, ref oid); - Ensure.Success(res); + InternalHidePush(identifier, NativeMethods.git_revwalk_hide); } private void Sort(GitSortOptions options) @@ -247,33 +282,106 @@ private void Sort(GitSortOptions options) NativeMethods.git_revwalk_sorting(handle, options); } - private ObjectId RetrieveCommitId(object identifier) + private GitObject RetrieveObject(string shaOrReferenceName) { - string shaOrReferenceName = RetrieveShaOrReferenceName(identifier); - GitObject gitObj = repo.Lookup(shaOrReferenceName); // TODO: Should we check the type? Git-log allows TagAnnotation oid as parameter. But what about Blobs and Trees? - if (gitObj == null) + EnsureGitObjectNotNull(shaOrReferenceName, gitObj); + + return gitObj; + } + + private static void EnsureGitObjectNotNull(string shaOrReferenceName, GitObject gitObj) + { + if (gitObj != null) + { + return; + } + + throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, + "No valid git object pointed at by '{0}' exists in the repository.", + shaOrReferenceName)); + } + + private ObjectId DereferenceToCommit(string identifier) + { + GitObject obj = RetrieveObject(identifier); + + if (obj is Commit) + { + return obj.Id; + } + + if (obj is TagAnnotation) { - throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "No valid git object pointed at by '{0}' exists in the repository.", identifier)); + return DereferenceToCommit(((TagAnnotation)obj).TargetId.Sha); } - return gitObj.Id; + throw new InvalidOperationException(); } - private static string RetrieveShaOrReferenceName(object identifier) + private IEnumerable RetrieveCommitOids(object identifier) { if (identifier is string) { - return identifier as string; + yield return DereferenceToCommit(identifier as string); + yield break; } - if (identifier is ObjectId || identifier is Reference || identifier is Branch) - return identifier.ToString(); + if (identifier is ObjectId) + { + yield return DereferenceToCommit(((ObjectId)identifier).Sha); + yield break; + } if (identifier is Commit) - return ((Commit)identifier).Id.Sha; + { + yield return ((Commit)identifier).Id; + yield break; + } + + if (identifier is TagAnnotation) + { + yield return DereferenceToCommit(((TagAnnotation)identifier).TargetId.Sha); + yield break; + } + + if (identifier is Tag) + { + yield return DereferenceToCommit(((Tag)identifier).Target.Id.Sha); + yield break; + } + + if (identifier is Branch) + { + var branch = (Branch)identifier; + EnsureGitObjectNotNull(branch.CanonicalName, branch.Tip); + + yield return branch.Tip.Id; + yield break; + } + + if (identifier is Reference) + { + yield return DereferenceToCommit(((Reference)identifier).CanonicalName); + yield break; + } + + if (identifier is IEnumerable) + { + var enumerable = (IEnumerable)identifier; + + foreach (var entry in enumerable) + { + foreach (var oid in RetrieveCommitOids(entry)) + { + yield return oid; + } + } + + yield break; + } throw new InvalidOperationException(string.Format("Unexpected kind of identifier '{0}'.", identifier)); } diff --git a/LibGit2Sharp/Filter.cs b/LibGit2Sharp/Filter.cs index 5985ddf30..6d56fd474 100644 --- a/LibGit2Sharp/Filter.cs +++ b/LibGit2Sharp/Filter.cs @@ -1,7 +1,7 @@ namespace LibGit2Sharp { /// - /// Options used to filter out the commits of the repository when querying its history. + /// Criterias used to filter out and order the commits of the repository when querying its history. /// public class Filter { @@ -23,9 +23,11 @@ public Filter() public GitSortOptions SortBy { get; set; } /// - /// The pointer to the commit to consider as a starting point. + /// A pointer to a commit object or a list of pointers to consider as starting points. /// - /// Can be either a containing the sha or reference canonical name to use, a or a . + /// Can be either a containing the sha or reference canonical name to use, + /// a , a , a , a + /// or a or even a mixed collection of all of the above. /// By default, the will be used as boundary. /// /// @@ -33,9 +35,11 @@ public Filter() /// - /// The pointer to the commit which will be excluded (along with its ancestors) from the enumeration. + /// A pointer to a commit object or a list of pointers which will be excluded (along with ancestors) from the enumeration. /// - /// Can be either a containing the sha or reference canonical name to use, a or a . + /// Can be either a containing the sha or reference canonical name to use, + /// a , a , a , a + /// or a or even a mixed collection of all of the above. /// /// public object Until { get; set; } From fef3488bf1603325789f144edd61a276bbc470f0 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 13 Sep 2011 15:43:52 +0200 Subject: [PATCH 07/28] Defer loading of the tip of a Branch --- LibGit2Sharp/Branch.cs | 31 +++++++++++++++++++++++++++---- LibGit2Sharp/Reference.cs | 5 +++-- LibGit2Sharp/Repository.cs | 2 +- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/LibGit2Sharp/Branch.cs b/LibGit2Sharp/Branch.cs index 8344c998c..e4eeef210 100644 --- a/LibGit2Sharp/Branch.cs +++ b/LibGit2Sharp/Branch.cs @@ -13,18 +13,41 @@ public class Branch : IEquatable new LambdaEqualityHelper(new Func[] {x => x.CanonicalName, x => x.Tip}); private readonly Repository repo; + private readonly Lazy tipBuilder; /// /// Initializes a new instance of the class. /// - /// The commit which is pointed at by this Branch + /// The id of the commit which is pointed at by this Branch /// The repo. /// The full name of the reference - internal Branch(string canonicalName, Commit tip, Repository repo) + internal Branch(string canonicalName, ObjectId targetId, Repository repo) + : this(canonicalName, new Lazy(() => repo.Lookup(targetId)), repo) { + } + + /// + /// Initializes a new instance of an orphaned class. + /// + /// This instance will point to no commit. + /// + /// + /// The repo. + /// The full name of the reference + internal Branch(string canonicalName, Repository repo) + : this(canonicalName, new Lazy(() => null), repo) + { + } + + private Branch(string canonicalName, Lazy tipBuilder, Repository repo) + { + Ensure.ArgumentNotNullOrEmptyString(canonicalName, "canonicalName"); + Ensure.ArgumentNotNull(tipBuilder, "tipObjectId"); + Ensure.ArgumentNotNull(repo, "repo"); + this.repo = repo; CanonicalName = canonicalName; - Tip = tip; + this.tipBuilder = tipBuilder; } /// @@ -65,7 +88,7 @@ public bool IsCurrentRepositoryHead /// /// Gets the commit id that this branch points to. /// - public Commit Tip { get; private set; } + public Commit Tip { get { return tipBuilder.Value; } } /// /// Gets the commits on this branch. (Starts walking from the References's target). diff --git a/LibGit2Sharp/Reference.cs b/LibGit2Sharp/Reference.cs index c063cfafc..8570b9fb7 100644 --- a/LibGit2Sharp/Reference.cs +++ b/LibGit2Sharp/Reference.cs @@ -70,16 +70,17 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class return reference as T; } - GitObject targetGitObject = repo.Lookup(targetIdentifier); + var targetOid = new ObjectId(targetIdentifier); if (Equals(typeof(T), typeof(Tag))) { + GitObject targetGitObject = repo.Lookup(targetIdentifier); return new Tag(reference.CanonicalName, targetGitObject, targetGitObject as TagAnnotation) as T; } if (Equals(typeof(T), typeof(Branch))) { - return new Branch(reference.CanonicalName, targetGitObject as Commit, repo) as T; + return new Branch(reference.CanonicalName, targetOid, repo) as T; } throw new InvalidOperationException( diff --git a/LibGit2Sharp/Repository.cs b/LibGit2Sharp/Repository.cs index 3c27d7c3a..44023f7dd 100644 --- a/LibGit2Sharp/Repository.cs +++ b/LibGit2Sharp/Repository.cs @@ -62,7 +62,7 @@ public Branch Head if (Info.IsEmpty) { - return new Branch(headRef.TargetIdentifier, null, this); + return new Branch(headRef.TargetIdentifier, this); } return Refs.Resolve(headRef.ResolveToDirectReference().CanonicalName); From 5295b22c3f2443a7cf76a27f94c1b799cd78b3df Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 13 Sep 2011 15:55:37 +0200 Subject: [PATCH 08/28] Replace defered loading implementation of DirectReference with Lazy --- LibGit2Sharp/DirectReference.cs | 25 +++++-------------------- LibGit2Sharp/Reference.cs | 4 ++-- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/LibGit2Sharp/DirectReference.cs b/LibGit2Sharp/DirectReference.cs index 0841ed6ba..70160b1b2 100644 --- a/LibGit2Sharp/DirectReference.cs +++ b/LibGit2Sharp/DirectReference.cs @@ -1,4 +1,4 @@ -using System; +using LibGit2Sharp.Core; namespace LibGit2Sharp { @@ -7,32 +7,17 @@ namespace LibGit2Sharp /// public class DirectReference : Reference { - private readonly Func targetResolver; - private bool resolved; - private GitObject target; + private readonly Lazy targetBuilder; - internal DirectReference(Func targetResolver) + internal DirectReference(Lazy targetBuilder) { - this.targetResolver = targetResolver; + this.targetBuilder = targetBuilder; } /// /// Gets the target of this /// - public GitObject Target - { - get - { - if (resolved) - { - return target; - } - - target = targetResolver(); - resolved = true; - return target; - } - } + public GitObject Target { get { return targetBuilder.Value; } } /// /// As a is already peeled, invoking this will return the same . diff --git a/LibGit2Sharp/Reference.cs b/LibGit2Sharp/Reference.cs index 8570b9fb7..79c33389d 100644 --- a/LibGit2Sharp/Reference.cs +++ b/LibGit2Sharp/Reference.cs @@ -57,8 +57,8 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class var targetId = new ObjectId(oid); targetIdentifier = targetId.Sha; - var targetResolver = new Func(() => repo.Lookup(targetId)); - reference = new DirectReference(targetResolver) { CanonicalName = name, TargetIdentifier = targetIdentifier }; + var targetBuilder = new Lazy(() => repo.Lookup(targetId)); + reference = new DirectReference(targetBuilder) { CanonicalName = name, TargetIdentifier = targetIdentifier }; break; default: From 75ae7f95d566368c7d4c8cb0264c1e403fcabb90 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 13 Sep 2011 16:59:28 +0200 Subject: [PATCH 09/28] Defer loading of Tag.Annotation and Tag.Target properties --- LibGit2Sharp.Tests/TagFixture.cs | 21 ++++++++++++--------- LibGit2Sharp/CommitCollection.cs | 4 ++-- LibGit2Sharp/GitObject.cs | 2 +- LibGit2Sharp/Reference.cs | 3 +-- LibGit2Sharp/Tag.cs | 26 ++++++++++++++++++++------ LibGit2Sharp/TagAnnotation.cs | 10 ++++++---- 6 files changed, 42 insertions(+), 24 deletions(-) diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs index bd97b0a6b..bd9bb3d89 100644 --- a/LibGit2Sharp.Tests/TagFixture.cs +++ b/LibGit2Sharp.Tests/TagFixture.cs @@ -10,7 +10,7 @@ namespace LibGit2Sharp.Tests [TestFixture] public class TagFixture : BaseFixture { - private readonly List expectedTags = new List {"test", "e90810b", "lw"}; + private readonly List expectedTags = new List { "test", "e90810b", "lw" }; private static readonly Signature signatureTim = new Signature("Tim Clem", "timothy.clem@gmail.com", DateTimeOffset.UtcNow); private static readonly Signature signatureNtk = new Signature("nulltoken", "emeric.fermas@gmail.com", Epoch.ToDateTimeOffset(1300557894, 60)); @@ -76,12 +76,15 @@ public void CanCreateATagWithNameContainingASlash() var lwTag = repo.Tags.Create(lwTagName, commitE90810BSha); lwTag.ShouldNotBeNull(); lwTag.IsAnnotated.ShouldBeFalse(); + lwTag.Target.Sha.ShouldEqual(commitE90810BSha); lwTag.Name.ShouldEqual(lwTagName); const string anTagName = lwTagName + "_as_well"; var anTag = repo.Tags.Create(anTagName, commitE90810BSha, signatureNtk, "a nice message"); anTag.ShouldNotBeNull(); anTag.IsAnnotated.ShouldBeTrue(); + anTag.Target.Sha.ShouldEqual(commitE90810BSha); + anTag.Annotation.Target.ShouldEqual(anTag.Target); anTag.Name.ShouldEqual(anTagName); } } @@ -158,9 +161,10 @@ public void CreatingAnAnnotatedTagIsDeterministic() using (var repo = new Repository(path.RepositoryPath)) { var newTag = repo.Tags.Create(tagName, commitE90810BSha, signatureNtk, tagMessage); - newTag.Target.Sha.ShouldEqual("24f6de34a108d931c6056fc4687637fe36c6bd6b"); + newTag.Target.Sha.ShouldEqual(commitE90810BSha); newTag.IsAnnotated.ShouldBeTrue(); newTag.Annotation.Sha.ShouldEqual("24f6de34a108d931c6056fc4687637fe36c6bd6b"); + newTag.Annotation.Target.Sha.ShouldEqual(commitE90810BSha); } } @@ -284,7 +288,7 @@ public void CanCreateATagPointingToATree() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var headCommit = (Commit)repo.Head.Tip; + var headCommit = repo.Head.Tip; var tree = headCommit.Tree; var tag = repo.ApplyTag("tree-tag", tree.Sha); @@ -328,10 +332,10 @@ public void CreatingALightweightTagPointingToATagAnnotationGeneratesAnAnnotatedT var tag = repo.ApplyTag("lightweight-tag", annotation.Sha); tag.ShouldNotBeNull(); tag.IsAnnotated.ShouldBeTrue(); - tag.Target.Id.ShouldEqual(annotation.Id); + tag.Target.Id.ShouldEqual(annotation.Target.Id); tag.Annotation.ShouldEqual(annotation); - repo.Lookup(tag.Target.Id).ShouldEqual(annotation); + repo.Lookup(tag.Annotation.Id).ShouldEqual(annotation); repo.Tags[tag.Name].ShouldEqual(tag); } } @@ -348,10 +352,9 @@ public void CanCreateAnAnnotatedTagPointingToATagAnnotation() var tag = repo.ApplyTag("annotatedtag-tag", annotation.Sha, signatureNtk, "A new annotation"); tag.ShouldNotBeNull(); tag.IsAnnotated.ShouldBeTrue(); - tag.Annotation.TargetId.ShouldEqual(annotation.Id); + tag.Annotation.Target.Id.ShouldEqual(annotation.Id); tag.Annotation.ShouldNotEqual(annotation); - repo.Lookup(tag.Target.Id).ShouldEqual(tag.Annotation); repo.Tags[tag.Name].ShouldEqual(tag); } } @@ -597,7 +600,7 @@ public void CanLookupAnAnnotatedTag() var tag = repo.Tags["e90810b"]; tag.ShouldNotBeNull(); tag.Name.ShouldEqual("e90810b"); - tag.Target.Sha.ShouldEqual(tagE90810BSha); + tag.Target.Sha.ShouldEqual(commitE90810BSha); tag.IsAnnotated.ShouldBeTrue(); tag.Annotation.Sha.ShouldEqual(tagE90810BSha); @@ -605,7 +608,7 @@ public void CanLookupAnAnnotatedTag() tag.Annotation.Tagger.Name.ShouldEqual("Vicent Marti"); tag.Annotation.Tagger.When.ShouldEqual(DateTimeOffset.Parse("2010-08-12 03:59:17 +0200")); tag.Annotation.Message.ShouldEqual("This is a very simple tag.\n"); - tag.Annotation.TargetId.Sha.ShouldEqual(commitE90810BSha); + tag.Annotation.Target.Sha.ShouldEqual(commitE90810BSha); } } diff --git a/LibGit2Sharp/CommitCollection.cs b/LibGit2Sharp/CommitCollection.cs index baa11b004..bf87512e9 100644 --- a/LibGit2Sharp/CommitCollection.cs +++ b/LibGit2Sharp/CommitCollection.cs @@ -315,7 +315,7 @@ private ObjectId DereferenceToCommit(string identifier) if (obj is TagAnnotation) { - return DereferenceToCommit(((TagAnnotation)obj).TargetId.Sha); + return DereferenceToCommit(((TagAnnotation)obj).Target.Sha); } throw new InvalidOperationException(); @@ -343,7 +343,7 @@ private IEnumerable RetrieveCommitOids(object identifier) if (identifier is TagAnnotation) { - yield return DereferenceToCommit(((TagAnnotation)identifier).TargetId.Sha); + yield return DereferenceToCommit(((TagAnnotation)identifier).Target.Id.Sha); yield break; } diff --git a/LibGit2Sharp/GitObject.cs b/LibGit2Sharp/GitObject.cs index a2f0d26f3..a0d9dd0d1 100644 --- a/LibGit2Sharp/GitObject.cs +++ b/LibGit2Sharp/GitObject.cs @@ -56,7 +56,7 @@ internal static GitObject CreateFromPtr(IntPtr obj, ObjectId id, Repository repo case GitObjectType.Tree: return Tree.BuildFromPtr(obj, id, repo); case GitObjectType.Tag: - return TagAnnotation.BuildFromPtr(obj, id); + return TagAnnotation.BuildFromPtr(obj, id, repo); case GitObjectType.Blob: return Blob.BuildFromPtr(obj, id, repo); default: diff --git a/LibGit2Sharp/Reference.cs b/LibGit2Sharp/Reference.cs index 79c33389d..8d67ed824 100644 --- a/LibGit2Sharp/Reference.cs +++ b/LibGit2Sharp/Reference.cs @@ -74,8 +74,7 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class if (Equals(typeof(T), typeof(Tag))) { - GitObject targetGitObject = repo.Lookup(targetIdentifier); - return new Tag(reference.CanonicalName, targetGitObject, targetGitObject as TagAnnotation) as T; + return new Tag(reference.CanonicalName, targetOid, repo) as T; } if (Equals(typeof(T), typeof(Branch))) diff --git a/LibGit2Sharp/Tag.cs b/LibGit2Sharp/Tag.cs index c86a0c823..8277d5f01 100644 --- a/LibGit2Sharp/Tag.cs +++ b/LibGit2Sharp/Tag.cs @@ -11,21 +11,23 @@ public class Tag : IEquatable private static readonly LambdaEqualityHelper equalityHelper = new LambdaEqualityHelper(new Func[] { x => x.CanonicalName, x => x.Target }); - internal Tag(string canonicalName, GitObject target, TagAnnotation tagAnnotation) + private readonly Lazy targetBuilder; + + internal Tag(string canonicalName, ObjectId targetId, Repository repo) { Ensure.ArgumentNotNullOrEmptyString(canonicalName, "canonicalName"); - Ensure.ArgumentNotNull(target, "target"); + Ensure.ArgumentNotNull(targetId, "targetId"); + Ensure.ArgumentNotNull(repo, "repo"); CanonicalName = canonicalName; - Target = target; - Annotation = tagAnnotation; + targetBuilder = new Lazy(() => repo.Lookup(targetId)); } /// /// Gets the optional information associated to this tag. /// When the is a lightweight tag, null is returned. /// - public TagAnnotation Annotation { get; private set; } + public TagAnnotation Annotation { get { return targetBuilder.Value as TagAnnotation; } } /// /// Gets the full name of this branch. @@ -40,7 +42,19 @@ internal Tag(string canonicalName, GitObject target, TagAnnotation tagAnnotation /// /// Gets the that this tag points to. /// - public GitObject Target { get; private set; } + public GitObject Target { + get + { + var target = targetBuilder.Value; + + if ((!(target is TagAnnotation))) + { + return target; + } + + return ((TagAnnotation)target).Target; + } + } /// /// Indicates whether the tag holds any metadata. diff --git a/LibGit2Sharp/TagAnnotation.cs b/LibGit2Sharp/TagAnnotation.cs index 47280e3c0..faf54eb8d 100644 --- a/LibGit2Sharp/TagAnnotation.cs +++ b/LibGit2Sharp/TagAnnotation.cs @@ -9,6 +9,8 @@ namespace LibGit2Sharp /// public class TagAnnotation : GitObject { + private Lazy targetBuilder; + internal TagAnnotation(ObjectId id) : base(id) { @@ -25,16 +27,16 @@ internal TagAnnotation(ObjectId id) public string Message { get; private set; } /// - /// Gets the target id that this tag points to. + /// Gets the that this tag annotation points to. /// - public ObjectId TargetId { get; private set; } + public GitObject Target { get { return targetBuilder.Value; } } /// /// Gets the tagger. /// public Signature Tagger { get; private set; } - internal static TagAnnotation BuildFromPtr(IntPtr obj, ObjectId id) + internal static TagAnnotation BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) { var oidPtr = NativeMethods.git_tag_target_oid(obj); var oid = (GitOid)Marshal.PtrToStructure(oidPtr, typeof(GitOid)); @@ -44,7 +46,7 @@ internal static TagAnnotation BuildFromPtr(IntPtr obj, ObjectId id) Message = NativeMethods.git_tag_message(obj).MarshallAsString(), Name = NativeMethods.git_tag_name(obj).MarshallAsString(), Tagger = new Signature(NativeMethods.git_tag_tagger(obj)), - TargetId = new ObjectId(oid) + targetBuilder = new Lazy(() => repo.Lookup(new ObjectId(oid))) }; } } From df04d9d21aad672241f4c995a217fc1f473ab818 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Thu, 15 Sep 2011 14:24:07 +0200 Subject: [PATCH 10/28] Enforce code style --- LibGit2Sharp.Tests/BlobFixture.cs | 10 +- LibGit2Sharp.Tests/BranchFixture.cs | 50 ++++----- LibGit2Sharp.Tests/CommitFixture.cs | 40 +++---- LibGit2Sharp.Tests/EpochFixture.cs | 20 ++-- LibGit2Sharp.Tests/IndexFixture.cs | 26 ++--- LibGit2Sharp.Tests/LazyFixture.cs | 6 +- LibGit2Sharp.Tests/ObjectIdFixture.cs | 2 +- LibGit2Sharp.Tests/Properties/AssemblyInfo.cs | 2 +- LibGit2Sharp.Tests/ReferenceFixture.cs | 51 +++++---- LibGit2Sharp.Tests/RepositoryFixture.cs | 33 +++--- LibGit2Sharp.Tests/TagFixture.cs | 83 +++++++------- .../TestHelpers/AssertExtensions.cs | 2 +- LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs | 4 +- LibGit2Sharp.Tests/TestHelpers/Constants.cs | 4 +- .../TestHelpers/DirectoryHelper.cs | 10 +- .../TestHelpers/SelfCleaningDirectory.cs | 3 +- .../TestHelpers/SignatureExtensions.cs | 2 +- .../TestHelpers/TemporaryCloneOfTestRepo.cs | 2 +- LibGit2Sharp.Tests/TreeFixture.cs | 6 +- LibGit2Sharp/AbbreviatedObjectId.cs | 7 +- LibGit2Sharp/Blob.cs | 4 +- LibGit2Sharp/Branch.cs | 25 +++-- LibGit2Sharp/BranchCollection.cs | 22 ++-- LibGit2Sharp/Commit.cs | 34 +++--- LibGit2Sharp/CommitCollection.cs | 61 +++++----- LibGit2Sharp/Core/Ensure.cs | 18 +-- LibGit2Sharp/Core/Epoch.cs | 24 ++-- LibGit2Sharp/Core/GitErrorCode.cs | 70 ++++++------ LibGit2Sharp/Core/GitIndexEntry.cs | 2 +- LibGit2Sharp/Core/GitIndexTime.cs | 2 +- LibGit2Sharp/Core/GitObjectTypeMap.cs | 2 +- LibGit2Sharp/Core/GitOid.cs | 2 +- LibGit2Sharp/Core/GitReferenceType.cs | 2 +- LibGit2Sharp/Core/GitRepositoryPathId.cs | 2 +- LibGit2Sharp/Core/GitSignature.cs | 2 +- LibGit2Sharp/Core/GitTime.cs | 2 +- LibGit2Sharp/Core/IndexSafeHandle.cs | 2 +- LibGit2Sharp/Core/IntPtrExtensions.cs | 2 +- LibGit2Sharp/Core/LambdaEqualityHelper.cs | 6 +- LibGit2Sharp/Core/Lazy.cs | 17 +-- LibGit2Sharp/Core/Libgit2UnsafeHelper.cs | 6 +- LibGit2Sharp/Core/NativeMethods.cs | 105 +++++++++--------- LibGit2Sharp/Core/ObjectSafeWrapper.cs | 6 +- LibGit2Sharp/Core/PosixPathHelper.cs | 4 +- LibGit2Sharp/Core/RepositorySafeHandle.cs | 2 +- LibGit2Sharp/Core/RevWalkerSafeHandle.cs | 2 +- LibGit2Sharp/Core/SafeHandleBase.cs | 2 +- LibGit2Sharp/Core/UnSafeNativeMethods.cs | 2 +- .../{UTF8Marshaler.cs => Utf8Marshaler.cs} | 32 +++--- LibGit2Sharp/DirectReference.cs | 9 +- LibGit2Sharp/Filter.cs | 41 ++++--- LibGit2Sharp/GitObject.cs | 48 ++++---- LibGit2Sharp/GitObjectType.cs | 24 ++-- LibGit2Sharp/GitSortOptions.cs | 26 ++--- LibGit2Sharp/ICommitCollection.cs | 4 +- LibGit2Sharp/IQueryableCommitCollection.cs | 16 +-- LibGit2Sharp/Index.cs | 30 ++--- LibGit2Sharp/IndexEntry.cs | 4 +- LibGit2Sharp/IndexEntryState.cs | 2 +- LibGit2Sharp/LibGit2Sharp.csproj | 2 +- LibGit2Sharp/ObjectId.cs | 75 +++++++------ LibGit2Sharp/Properties/AssemblyInfo.cs | 2 +- LibGit2Sharp/Reference.cs | 49 ++++---- LibGit2Sharp/ReferenceCollection.cs | 40 ++++--- LibGit2Sharp/Repository.cs | 59 +++++----- LibGit2Sharp/RepositoryExtensions.cs | 70 ++++++------ LibGit2Sharp/RepositoryInformation.cs | 6 +- LibGit2Sharp/Signature.cs | 4 +- LibGit2Sharp/SymbolicReference.cs | 4 +- LibGit2Sharp/Tag.cs | 62 ++++++----- LibGit2Sharp/TagAnnotation.cs | 11 +- LibGit2Sharp/TagCollection.cs | 21 ++-- LibGit2Sharp/Tree.cs | 10 +- LibGit2Sharp/TreeEntry.cs | 45 ++++---- ResharperSettings.xml | 17 ++- 75 files changed, 787 insertions(+), 719 deletions(-) rename LibGit2Sharp/Core/{UTF8Marshaler.cs => Utf8Marshaler.cs} (69%) diff --git a/LibGit2Sharp.Tests/BlobFixture.cs b/LibGit2Sharp.Tests/BlobFixture.cs index 724c5d8e4..d130561d0 100755 --- a/LibGit2Sharp.Tests/BlobFixture.cs +++ b/LibGit2Sharp.Tests/BlobFixture.cs @@ -15,7 +15,7 @@ public void CanGetBlobAsUtf8() { var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - var text = blob.ContentAsUtf8(); + string text = blob.ContentAsUtf8(); text.ShouldEqual("hey there\n"); } } @@ -46,10 +46,10 @@ public void CanReadBlobContent() using (var repo = new Repository(Constants.BareTestRepoPath)) { var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - var bytes = blob.Content; + byte[] bytes = blob.Content; bytes.Length.ShouldEqual(10); - var content = Encoding.UTF8.GetString(bytes); + string content = Encoding.UTF8.GetString(bytes); content.ShouldEqual("hey there\n"); } } @@ -63,10 +63,10 @@ public void CanReadBlobStream() using (var tr = new StreamReader(blob.ContentStream, Encoding.UTF8)) { - var content = tr.ReadToEnd(); + string content = tr.ReadToEnd(); content.ShouldEqual("hey there\n"); } } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/BranchFixture.cs b/LibGit2Sharp.Tests/BranchFixture.cs index b42c2eece..73f1acbf8 100644 --- a/LibGit2Sharp.Tests/BranchFixture.cs +++ b/LibGit2Sharp.Tests/BranchFixture.cs @@ -9,7 +9,7 @@ namespace LibGit2Sharp.Tests [TestFixture] public class BranchFixture : BaseFixture { - private readonly List expectedBranches = new List {"packed-test", "packed", "br2", "master", "test", "deadbeef"}; + private readonly List expectedBranches = new List { "packed-test", "packed", "br2", "master", "test", "deadbeef" }; [Test] public void CanCheckoutAnExistingBranch() @@ -17,10 +17,10 @@ public void CanCheckoutAnExistingBranch() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var master = repo.Branches["master"]; + Branch master = repo.Branches["master"]; master.IsCurrentRepositoryHead.ShouldBeTrue(); - var test = repo.Branches.Checkout("test"); + Branch test = repo.Branches.Checkout("test"); test.IsCurrentRepositoryHead.ShouldBeTrue(); master.IsCurrentRepositoryHead.ShouldBeFalse(); @@ -34,7 +34,7 @@ public void CanCreateBranch() using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; - var newBranch = repo.CreateBranch(name, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); + Branch newBranch = repo.CreateBranch(name, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); newBranch.ShouldNotBeNull(); newBranch.Name.ShouldEqual(name); newBranch.CanonicalName.ShouldEqual("refs/heads/" + name); @@ -53,7 +53,7 @@ public void CanCreateBranchUsingAbbreviatedSha() using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; - var newBranch = repo.CreateBranch(name, "be3563a"); + Branch newBranch = repo.CreateBranch(name, "be3563a"); newBranch.CanonicalName.ShouldEqual("refs/heads/" + name); newBranch.Tip.Sha.ShouldEqual("be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); } @@ -66,7 +66,7 @@ public void CanCreateBranchFromImplicitHead() using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; - var newBranch = repo.CreateBranch(name); + Branch newBranch = repo.CreateBranch(name); newBranch.ShouldNotBeNull(); newBranch.Name.ShouldEqual(name); newBranch.CanonicalName.ShouldEqual("refs/heads/" + name); @@ -85,7 +85,7 @@ public void CanCreateBranchFromExplicitHead() using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; - var newBranch = repo.CreateBranch(name, "HEAD"); + Branch newBranch = repo.CreateBranch(name, "HEAD"); newBranch.ShouldNotBeNull(); newBranch.Tip.Sha.ShouldEqual("4c062a6361ae6959e06292c1fa5e2822d9c96345"); } @@ -96,7 +96,7 @@ public void CanListAllBranches() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (var r in repo.Branches) + foreach (Branch r in repo.Branches) { Assert.Contains(r.Name, expectedBranches); } @@ -110,11 +110,11 @@ public void CanLookupABranchByItsCanonicalName() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var branch = repo.Branches["refs/heads/br2"]; + Branch branch = repo.Branches["refs/heads/br2"]; branch.ShouldNotBeNull(); branch.Name.ShouldEqual("br2"); - var branch2 = repo.Branches["refs/heads/br2"]; + Branch branch2 = repo.Branches["refs/heads/br2"]; branch2.ShouldNotBeNull(); branch2.Name.ShouldEqual("br2"); @@ -128,7 +128,7 @@ public void CanLookupLocalBranch() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var master = repo.Branches["master"]; + Branch master = repo.Branches["master"]; master.ShouldNotBeNull(); master.IsRemote.ShouldBeFalse(); master.Name.ShouldEqual("master"); @@ -143,7 +143,7 @@ public void CanWalkCommitsFromAnotherBranch() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var master = repo.Branches["test"]; + Branch master = repo.Branches["test"]; master.Commits.Count().ShouldEqual(2); } } @@ -153,7 +153,7 @@ public void CanWalkCommitsFromBranch() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var master = repo.Branches["master"]; + Branch master = repo.Branches["master"]; master.Commits.Count().ShouldEqual(7); } } @@ -243,7 +243,7 @@ public void OnlyOneBranchIsTheHead() { Branch head = null; - foreach (var branch in repo.Branches) + foreach (Branch branch in repo.Branches) { bool isHead = branch.IsCurrentRepositoryHead; @@ -271,9 +271,9 @@ public void TwoBranchesPointingAtTheSameCommitAreNotBothCurrent() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var master = repo.Branches["refs/heads/master"]; + Branch master = repo.Branches["refs/heads/master"]; - var newBranch = repo.Branches.Create("clone-of-master", master.Tip.Sha); + Branch newBranch = repo.Branches.Create("clone-of-master", master.Tip.Sha); newBranch.IsCurrentRepositoryHead.ShouldBeFalse(); } } @@ -286,7 +286,7 @@ public void CanMoveABranch() { repo.Branches["br3"].ShouldBeNull(); - var newBranch = repo.Branches.Move("br2", "br3"); + Branch newBranch = repo.Branches.Move("br2", "br3"); newBranch.Name.ShouldEqual("br3"); repo.Branches["br2"].ShouldBeNull(); @@ -310,18 +310,18 @@ public void CanMoveABranchWhileOverwritingAnExistingOne() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var test = repo.Branches["test"]; + Branch test = repo.Branches["test"]; test.ShouldNotBeNull(); - var br2 = repo.Branches["br2"]; + Branch br2 = repo.Branches["br2"]; br2.ShouldNotBeNull(); - var newBranch = repo.Branches.Move("br2", "test", true); + Branch newBranch = repo.Branches.Move("br2", "test", true); newBranch.Name.ShouldEqual("test"); repo.Branches["br2"].ShouldBeNull(); - var newTest = repo.Branches["test"]; + Branch newTest = repo.Branches["test"]; newTest.ShouldNotBeNull(); newTest.ShouldEqual(newBranch); @@ -335,15 +335,15 @@ public void CreatingABranchTriggersTheCreationOfADirectReference() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newBranch = repo.CreateBranch("clone-of-master"); + Branch newBranch = repo.CreateBranch("clone-of-master"); newBranch.IsCurrentRepositoryHead.ShouldBeFalse(); - var commitId = repo.Head.Tip.Id; + ObjectId commitId = repo.Head.Tip.Id; newBranch.Tip.Id.ShouldEqual(commitId); - var reference = repo.Refs[newBranch.CanonicalName]; + Reference reference = repo.Refs[newBranch.CanonicalName]; reference.ShouldNotBeNull(); - Assert.IsInstanceOf(typeof (DirectReference), reference); + Assert.IsInstanceOf(typeof(DirectReference), reference); } } } diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index 7b1f99717..daec27e8b 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -44,7 +44,7 @@ public void CanEnumerateCommits() int count = 0; using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (var commit in repo.Commits) + foreach (Commit commit in repo.Commits) { commit.ShouldNotBeNull(); count++; @@ -59,7 +59,7 @@ public void CanEnumerateCommitsInDetachedHeadState() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var parentOfHead = repo.Head.Tip.Parents.First().Id; + ObjectId parentOfHead = repo.Head.Tip.Parents.First().Id; repo.Refs.Create("HEAD", parentOfHead.Sha, true); Assert.AreEqual(true, repo.Info.IsHeadDetached); @@ -83,7 +83,7 @@ public void CanEnumerateCommitsFromSha() int count = 0; using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (var commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f" })) + foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f" })) { commit.ShouldNotBeNull(); count++; @@ -134,7 +134,7 @@ public void CanEnumerateCommitsWithReverseTimeSorting() int count = 0; using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (var commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse })) + foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse })) { commit.ShouldNotBeNull(); commit.Sha.StartsWith(expectedShas[count]); @@ -149,13 +149,13 @@ public void CanEnumerateCommitsWithReverseTopoSorting() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse }).ToList(); - foreach (var commit in commits) + List commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse }).ToList(); + foreach (Commit commit in commits) { commit.ShouldNotBeNull(); - foreach (var p in commit.Parents) + foreach (Commit p in commit.Parents) { - var parent = commits.Single(x => x.Id == p.Id); + Commit parent = commits.Single(x => x.Id == p.Id); Assert.Greater(commits.IndexOf(commit), commits.IndexOf(parent)); } } @@ -168,7 +168,7 @@ public void CanEnumerateCommitsWithTimeSorting() int count = 0; using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (var commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time })) + foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time })) { commit.ShouldNotBeNull(); commit.Sha.StartsWith(expectedShas[count]); @@ -183,13 +183,13 @@ public void CanEnumerateCommitsWithTopoSorting() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Topological }).ToList(); - foreach (var commit in commits) + List commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Topological }).ToList(); + foreach (Commit commit in commits) { commit.ShouldNotBeNull(); - foreach (var p in commit.Parents) + foreach (Commit p in commit.Parents) { - var parent = commits.Single(x => x.Id == p.Id); + Commit parent = commits.Single(x => x.Id == p.Id); Assert.Less(commits.IndexOf(commit), commits.IndexOf(parent)); } } @@ -285,7 +285,7 @@ private static void AssertEnumerationOfCommits(Func filterBu { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var commits = repo.Commits.QueryBy(filterBuilder(repo)); + ICommitCollection commits = repo.Commits.QueryBy(filterBuilder(repo)); IEnumerable commitShas = commits.Select(c => c.Id.ToString(7)).ToArray(); @@ -310,7 +310,7 @@ public void CanReadCommitData() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var obj = repo.Lookup(sha); + GitObject obj = repo.Lookup(sha); obj.ShouldNotBeNull(); obj.GetType().ShouldEqual(typeof(Commit)); @@ -350,7 +350,7 @@ public void CanCommitALittleBit() { using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath); + string dir = Repository.Init(scd.DirectoryPath); Path.IsPathRooted(dir).ShouldBeTrue(); Directory.Exists(dir).ShouldBeTrue(); @@ -364,7 +364,7 @@ public void CanCommitALittleBit() repo.Index.Stage("new.txt"); var author = new Signature("Author N. Ame", "him@there.com", DateTimeOffset.Now.AddSeconds(-10)); - var commit = repo.Commit(author, author, "Initial egotistic commit"); + Commit commit = repo.Commit(author, author, "Initial egotistic commit"); commit.Parents.Count().ShouldEqual(0); repo.Info.IsEmpty.ShouldBeFalse(); @@ -373,7 +373,7 @@ public void CanCommitALittleBit() repo.Index.Stage("new.txt"); var author2 = new Signature(author.Name, author.Email, author.When.AddSeconds(5)); - var commit2 = repo.Commit(author2, author2, "Are you trying to fork me?"); + Commit commit2 = repo.Commit(author2, author2, "Are you trying to fork me?"); commit2.Parents.Count().ShouldEqual(1); commit2.Parents.First().Id.ShouldEqual(commit.Id); @@ -386,7 +386,7 @@ public void CanCommitALittleBit() var author3 = new Signature("David Fowler", "david.fowler@microsoft.com", author.When.AddSeconds(2)); repo.Index.Stage("new.txt"); - var commit3 = repo.Commit(author3, author3, "I'm going to branch you backwards in time!"); + Commit commit3 = repo.Commit(author3, author3, "I'm going to branch you backwards in time!"); commit3.Parents.Count().ShouldEqual(1); commit3.Parents.First().Id.ShouldEqual(commit.Id); @@ -394,4 +394,4 @@ public void CanCommitALittleBit() } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/EpochFixture.cs b/LibGit2Sharp.Tests/EpochFixture.cs index 4dd4e0ab0..8ef933e5a 100644 --- a/LibGit2Sharp.Tests/EpochFixture.cs +++ b/LibGit2Sharp.Tests/EpochFixture.cs @@ -11,7 +11,7 @@ public class EpochFixture [TestCase(17)] public void UnixTimestampShouldBeCastIntoAUtcBasedDateTimeOffset(long secondsSinceEpoch) { - var date = Epoch.ToDateTimeOffset(secondsSinceEpoch, 0); + DateTimeOffset date = Epoch.ToDateTimeOffset(secondsSinceEpoch, 0); Assert.AreEqual(0, date.Offset.TotalMinutes); Assert.AreEqual(TimeSpan.Zero, date.Offset); @@ -23,8 +23,8 @@ public void UnixTimestampShouldBeCastIntoAUtcBasedDateTimeOffset(long secondsSin [TestCase(31, 60)] public void AreEqual(long secondsSinceEpoch, int timezoneOffset) { - var one = Epoch.ToDateTimeOffset(secondsSinceEpoch, timezoneOffset); - var another = Epoch.ToDateTimeOffset(secondsSinceEpoch, timezoneOffset); + DateTimeOffset one = Epoch.ToDateTimeOffset(secondsSinceEpoch, timezoneOffset); + DateTimeOffset another = Epoch.ToDateTimeOffset(secondsSinceEpoch, timezoneOffset); Assert.AreEqual(one, another); Assert.AreEqual(another, one); @@ -43,9 +43,9 @@ public void AreEqual(long secondsSinceEpoch, int timezoneOffset) [TestCase(1288114383, "Tue, 26 Oct 2010 17:33:03 +0000")] public void UnixTimestampShouldShouldBeCastIntoAPlainUtcDate(long secondsSinceEpoch, string expected) { - var expectedDate = DateTimeOffset.Parse(expected); + DateTimeOffset expectedDate = DateTimeOffset.Parse(expected); - var date = Epoch.ToDateTimeOffset(secondsSinceEpoch, 0); + DateTimeOffset date = Epoch.ToDateTimeOffset(secondsSinceEpoch, 0); Assert.AreEqual(secondsSinceEpoch, date.ToSecondsSinceEpoch()); Assert.AreEqual(expectedDate, date); @@ -55,9 +55,9 @@ public void UnixTimestampShouldShouldBeCastIntoAPlainUtcDate(long secondsSinceEp [TestCase(1250379778, -210, "Sat, 15 Aug 2009 20:12:58 -0330")] public void UnixTimestampAndTimezoneOffsetShouldBeCastIntoAUtcDateBearingAnOffset(long secondsSinceEpoch, Int32 offset, string expected) { - var expectedDate = DateTimeOffset.Parse(expected); + DateTimeOffset expectedDate = DateTimeOffset.Parse(expected); - var date = Epoch.ToDateTimeOffset(secondsSinceEpoch, offset); + DateTimeOffset date = Epoch.ToDateTimeOffset(secondsSinceEpoch, offset); Assert.AreEqual(offset, date.Offset.TotalMinutes); Assert.AreEqual(secondsSinceEpoch, date.ToSecondsSinceEpoch()); @@ -74,9 +74,9 @@ public void UnixTimestampAndTimezoneOffsetShouldBeCastIntoAUtcDateBearingAnOffse [TestCase("Sun, 16 Aug 2009 00:42:58 +0100", 1250379778, 60)] public void DateTimeOffsetShoudlBeCastIntoAUnixTimestampAndATimezoneOffset(string formattedDate, long expectedSeconds, Int32 expectedOffset) { - var when = DateTimeOffset.Parse(formattedDate); - var date = Epoch.ToDateTimeOffset(expectedSeconds, expectedOffset); + DateTimeOffset when = DateTimeOffset.Parse(formattedDate); + DateTimeOffset date = Epoch.ToDateTimeOffset(expectedSeconds, expectedOffset); Assert.AreEqual(when, date); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/IndexFixture.cs b/LibGit2Sharp.Tests/IndexFixture.cs index ac9567434..c1f3ca373 100644 --- a/LibGit2Sharp.Tests/IndexFixture.cs +++ b/LibGit2Sharp.Tests/IndexFixture.cs @@ -37,7 +37,7 @@ public void CanEnumerateIndex() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - foreach (var entry in repo.Index) + foreach (IndexEntry entry in repo.Index) { Assert.IsTrue(expectedEntries.Contains(entry.Path), string.Format("Could not find {0}", entry.Path)); } @@ -67,10 +67,10 @@ public void CanFetchAnIndexEntryByItsName() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - var entry = repo.Index["README"]; + IndexEntry entry = repo.Index["README"]; entry.Path.ShouldEqual("README"); - var entryWithPath = repo.Index["1/branch_file.txt"]; + IndexEntry entryWithPath = repo.Index["1/branch_file.txt"]; entryWithPath.Path.ShouldEqual("1/branch_file.txt"); } } @@ -80,7 +80,7 @@ public void FetchingAnUnknwonIndexEntryReturnsNull() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - var entry = repo.Index["I-do-not-exist.txt"]; + IndexEntry entry = repo.Index["I-do-not-exist.txt"]; entry.ShouldBeNull(); } } @@ -97,7 +97,7 @@ public void CanStageANewFile() using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) using (var repo = new Repository(path.RepositoryPath)) { - var count = repo.Index.Count; + int count = repo.Index.Count; const string filename = "unit_test.txt"; repo.Index[filename].ShouldBeNull(); File.WriteAllText(Path.Combine(repo.Info.WorkingDirectory, filename), "some contents"); @@ -122,13 +122,13 @@ public void StagingANewVersionOfAFileThenUnstagingRevertsTheBlobToTheVersionOfHe const string fileName = "myFile.txt"; - var fullpath = Path.Combine(repo.Info.WorkingDirectory, fileName); + string fullpath = Path.Combine(repo.Info.WorkingDirectory, fileName); const string initialContent = "Hello?"; File.AppendAllText(fullpath, initialContent); repo.Index.Stage(fileName); - var blobId = repo.Index[fileName].Id; + ObjectId blobId = repo.Index[fileName].Id; repo.Commit(Constants.Signature, Constants.Signature, "Initial commit"); repo.Index.Count.ShouldEqual(1); @@ -174,7 +174,7 @@ public void CanStageANewFileWithAFullPath() using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) using (var repo = new Repository(path.RepositoryPath)) { - var count = repo.Index.Count; + int count = repo.Index.Count; const string filename = "new_untracked_file.txt"; string fullPath = Path.Combine(repo.Info.WorkingDirectory, filename); @@ -194,7 +194,7 @@ public void StagingANewFileWithAFullPathWhichEscapesOutOfTheWorkingDirThrows() using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) using (var repo = new Repository(path.RepositoryPath)) { - var di = Directory.CreateDirectory(scd.DirectoryPath); + DirectoryInfo di = Directory.CreateDirectory(scd.DirectoryPath); const string filename = "unit_test.txt"; string fullPath = Path.Combine(di.FullName, filename); @@ -258,7 +258,7 @@ public void CanUnstageANewFile() using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) using (var repo = new Repository(path.RepositoryPath)) { - var count = repo.Index.Count; + int count = repo.Index.Count; const string filename = "new_untracked_file.txt"; string fullPath = Path.Combine(repo.Info.WorkingDirectory, filename); @@ -292,8 +292,8 @@ public void ReadIndexWithBadParamsFails() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - Assert.Throws(() => { var entry = repo.Index[null]; }); - Assert.Throws(() => { var entry = repo.Index[string.Empty]; }); + Assert.Throws(() => { IndexEntry entry = repo.Index[null]; }); + Assert.Throws(() => { IndexEntry entry = repo.Index[string.Empty]; }); } } @@ -317,4 +317,4 @@ public void UnstagingFileWithBadParamsThrows() } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/LazyFixture.cs b/LibGit2Sharp.Tests/LazyFixture.cs index 42c7e4a7b..84862a12c 100644 --- a/LibGit2Sharp.Tests/LazyFixture.cs +++ b/LibGit2Sharp.Tests/LazyFixture.cs @@ -1,7 +1,7 @@ using System; using LibGit2Sharp.Core; -using NUnit.Framework; using LibGit2Sharp.Tests.TestHelpers; +using NUnit.Framework; namespace LibGit2Sharp.Tests { @@ -11,7 +11,7 @@ public class LazyFixture [Test] public void CanReturnTheValue() { - var lazy = new Lazy(() => 2); + var lazy = new Lazy(() => 2); lazy.Value.ShouldEqual(2); } @@ -39,4 +39,4 @@ public void IsEvaluatedOnlyOnce() lazy.Value.ShouldEqual(1); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/ObjectIdFixture.cs b/LibGit2Sharp.Tests/ObjectIdFixture.cs index 05a107df2..ebcef4d9f 100644 --- a/LibGit2Sharp.Tests/ObjectIdFixture.cs +++ b/LibGit2Sharp.Tests/ObjectIdFixture.cs @@ -118,4 +118,4 @@ public void TryParse(string maybeSha, bool isValidSha) parsedObjectId.ToString(42).ShouldEqual(maybeSha); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/Properties/AssemblyInfo.cs b/LibGit2Sharp.Tests/Properties/AssemblyInfo.cs index 424060a35..6d2256554 100644 --- a/LibGit2Sharp.Tests/Properties/AssemblyInfo.cs +++ b/LibGit2Sharp.Tests/Properties/AssemblyInfo.cs @@ -36,4 +36,4 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/LibGit2Sharp.Tests/ReferenceFixture.cs b/LibGit2Sharp.Tests/ReferenceFixture.cs index 0981d39f9..33421c1c0 100644 --- a/LibGit2Sharp.Tests/ReferenceFixture.cs +++ b/LibGit2Sharp.Tests/ReferenceFixture.cs @@ -9,8 +9,11 @@ namespace LibGit2Sharp.Tests [TestFixture] public class ReferenceFixture : BaseFixture { - private readonly List expectedRefs = new List { "refs/heads/packed-test", "refs/heads/packed", "refs/heads/br2", "refs/heads/master", "refs/heads/test", - "refs/heads/deadbeef", "refs/tags/test", "refs/tags/e90810b", "refs/tags/lw" }; + private readonly List expectedRefs = new List + { + "refs/heads/packed-test", "refs/heads/packed", "refs/heads/br2", "refs/heads/master", "refs/heads/test", + "refs/heads/deadbeef", "refs/tags/test", "refs/tags/e90810b", "refs/tags/lw" + }; [Test] public void CanCreateADirectReference() @@ -20,7 +23,7 @@ public void CanCreateADirectReference() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newRef = (DirectReference) repo.Refs.Create(name, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); + var newRef = (DirectReference)repo.Refs.Create(name, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); newRef.ShouldNotBeNull(); newRef.CanonicalName.ShouldEqual(name); newRef.Target.ShouldNotBeNull(); @@ -39,7 +42,7 @@ public void CanCreateASymbolicReference() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newRef = (SymbolicReference) repo.Refs.Create(name, target); + var newRef = (SymbolicReference)repo.Refs.Create(name, target); newRef.ShouldNotBeNull(); newRef.CanonicalName.ShouldEqual(name); newRef.Target.CanonicalName.ShouldEqual(target); @@ -172,12 +175,12 @@ public void DeletingAReferenceDecreasesTheRefsCount() { const string refName = "refs/heads/test"; - var refs = repo.Refs.Select(r => r.CanonicalName).ToList(); + List refs = repo.Refs.Select(r => r.CanonicalName).ToList(); refs.Contains(refName).ShouldBeTrue(); repo.Refs.Delete(refName); - var refs2 = repo.Refs.Select(r => r.CanonicalName).ToList(); + List refs2 = repo.Refs.Select(r => r.CanonicalName).ToList(); refs2.Contains(refName).ShouldBeFalse(); refs2.Count.ShouldEqual(refs.Count - 1); @@ -210,7 +213,7 @@ public void CanListAllReferencesEvenCorruptedOnes() { CreateCorruptedDeadBeefHead(repo.Info.Path); - foreach (var r in repo.Refs) + foreach (Reference r in repo.Refs) { Assert.Contains(r.CanonicalName, expectedRefs); } @@ -224,15 +227,15 @@ public void CanResolveHeadByName() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var head = (SymbolicReference) repo.Refs["HEAD"]; + var head = (SymbolicReference)repo.Refs["HEAD"]; head.ShouldNotBeNull(); head.CanonicalName.ShouldEqual("HEAD"); head.Target.ShouldNotBeNull(); head.Target.CanonicalName.ShouldEqual("refs/heads/master"); head.ResolveToDirectReference().Target.Sha.ShouldEqual("4c062a6361ae6959e06292c1fa5e2822d9c96345"); - Assert.IsInstanceOf(((DirectReference) head.Target).Target); + Assert.IsInstanceOf(((DirectReference)head.Target).Target); - var head2 = repo.Head; + Branch head2 = repo.Head; head2.CanonicalName.ShouldEqual("refs/heads/master"); head2.Tip.ShouldNotBeNull(); @@ -245,7 +248,7 @@ public void CanResolveReferenceToALightweightTag() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var lwTag = (DirectReference) repo.Refs["refs/tags/lw"]; + var lwTag = (DirectReference)repo.Refs["refs/tags/lw"]; lwTag.ShouldNotBeNull(); lwTag.CanonicalName.ShouldEqual("refs/tags/lw"); lwTag.Target.ShouldNotBeNull(); @@ -259,7 +262,7 @@ public void CanResolveReferenceToAnAnnotatedTag() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var annTag = (DirectReference) repo.Refs["refs/tags/test"]; + var annTag = (DirectReference)repo.Refs["refs/tags/test"]; annTag.ShouldNotBeNull(); annTag.CanonicalName.ShouldEqual("refs/tags/test"); annTag.Target.ShouldNotBeNull(); @@ -273,7 +276,7 @@ public void CanResolveRefsByName() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var master = (DirectReference) repo.Refs["refs/heads/master"]; + var master = (DirectReference)repo.Refs["refs/heads/master"]; master.ShouldNotBeNull(); master.CanonicalName.ShouldEqual("refs/heads/master"); master.Target.ShouldNotBeNull(); @@ -287,7 +290,7 @@ public void ResolvingWithEmptyStringThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => { var head = repo.Refs[string.Empty]; }); + Assert.Throws(() => { Reference head = repo.Refs[string.Empty]; }); } } @@ -296,7 +299,7 @@ public void ResolvingWithNullThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => { var head = repo.Refs[null]; }); + Assert.Throws(() => { Reference head = repo.Refs[null]; }); } } @@ -307,11 +310,11 @@ public void CanUpdateTargetOnReference() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var sha = repo.Refs["refs/heads/test"].ResolveToDirectReference().Target.Sha; - var master = repo.Refs[masterRef]; + string sha = repo.Refs["refs/heads/test"].ResolveToDirectReference().Target.Sha; + Reference master = repo.Refs[masterRef]; master.ResolveToDirectReference().Target.Sha.ShouldNotEqual(sha); - var updated = repo.Refs.UpdateTarget(masterRef, sha); + Reference updated = repo.Refs.UpdateTarget(masterRef, sha); master = repo.Refs[masterRef]; master.ShouldEqual(updated); @@ -327,12 +330,12 @@ public void CanUpdateTargetOnSymbolicReference() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newRef = (SymbolicReference) repo.Refs.Create(name, "refs/heads/master"); + var newRef = (SymbolicReference)repo.Refs.Create(name, "refs/heads/master"); newRef.ShouldNotBeNull(); repo.Refs.UpdateTarget(newRef.CanonicalName, "refs/heads/test"); - newRef = (SymbolicReference) repo.Refs[newRef.CanonicalName]; + newRef = (SymbolicReference)repo.Refs[newRef.CanonicalName]; newRef.ResolveToDirectReference().Target.ShouldEqual(repo.Refs["refs/heads/test"].ResolveToDirectReference().Target); repo.Refs.Delete(newRef.CanonicalName); @@ -346,7 +349,7 @@ public void UpdatingADirectRefWithSymbolFails() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newRef = (SymbolicReference) repo.Refs.Create(name, "refs/heads/master"); + var newRef = (SymbolicReference)repo.Refs.Create(name, "refs/heads/master"); newRef.ShouldNotBeNull(); Assert.Throws( @@ -465,12 +468,12 @@ public void MovingAReferenceDoesNotDecreaseTheRefsCount() const string oldName = "refs/tags/test"; const string newName = "refs/atic/tagtest"; - var refs = repo.Refs.Select(r => r.CanonicalName).ToList(); + List refs = repo.Refs.Select(r => r.CanonicalName).ToList(); refs.Contains(oldName).ShouldBeTrue(); repo.Refs.Move(oldName, newName); - var refs2 = repo.Refs.Select(r => r.CanonicalName).ToList(); + List refs2 = repo.Refs.Select(r => r.CanonicalName).ToList(); refs2.Contains(oldName).ShouldBeFalse(); refs2.Contains(newName).ShouldBeTrue(); @@ -494,4 +497,4 @@ public void CanLookupAMovedReference() } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/RepositoryFixture.cs b/LibGit2Sharp.Tests/RepositoryFixture.cs index 9c27ac0a6..b7291983e 100644 --- a/LibGit2Sharp.Tests/RepositoryFixture.cs +++ b/LibGit2Sharp.Tests/RepositoryFixture.cs @@ -16,7 +16,7 @@ public void CanCreateBareRepo() { using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath, true); + string dir = Repository.Init(scd.DirectoryPath, true); Path.IsPathRooted(dir).ShouldBeTrue(); Directory.Exists(dir).ShouldBeTrue(); CheckGitConfigFile(dir); @@ -37,7 +37,7 @@ public void CanCreateStandardRepo() { using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath); + string dir = Repository.Init(scd.DirectoryPath); Path.IsPathRooted(dir).ShouldBeTrue(); Directory.Exists(dir).ShouldBeTrue(); CheckGitConfigFile(dir); @@ -66,7 +66,7 @@ private void CheckGitConfigFile(string dir) private static void AssertIsHidden(string repoPath) { - var attribs = File.GetAttributes(repoPath); + FileAttributes attribs = File.GetAttributes(repoPath); (attribs & FileAttributes.Hidden).ShouldEqual(FileAttributes.Hidden); } @@ -84,7 +84,7 @@ private static void AssertInitializedRepository(Repository repo) repo.Info.IsEmpty.ShouldBeTrue(); repo.Info.IsHeadDetached.ShouldBeFalse(); - var headRef = repo.Refs["HEAD"]; + Reference headRef = repo.Refs["HEAD"]; headRef.ShouldNotBeNull(); headRef.TargetIdentifier.ShouldEqual("refs/heads/master"); headRef.ResolveToDirectReference().ShouldBeNull(); @@ -103,11 +103,10 @@ private static void AssertInitializedRepository(Repository repo) repo.Tags.Count().ShouldEqual(0); } - [Test] public void CanOpenRepoWithFullPath() { - var path = Path.GetFullPath(Constants.BareTestRepoPath); + string path = Path.GetFullPath(Constants.BareTestRepoPath); using (var repo = new Repository(path)) { repo.ShouldNotBeNull(); @@ -155,7 +154,7 @@ public void CanLookupACommitByTheNameOfABranch() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var gitObject = repo.Lookup("refs/heads/master"); + GitObject gitObject = repo.Lookup("refs/heads/master"); gitObject.ShouldNotBeNull(); Assert.IsInstanceOf(gitObject); } @@ -166,7 +165,7 @@ public void CanLookupACommitByTheNameOfALightweightTag() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var gitObject = repo.Lookup("refs/tags/lw"); + GitObject gitObject = repo.Lookup("refs/tags/lw"); gitObject.ShouldNotBeNull(); Assert.IsInstanceOf(gitObject); } @@ -177,7 +176,7 @@ public void CanLookupATagAnnotationByTheNameOfAnAnnotatedTag() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var gitObject = repo.Lookup("refs/tags/e90810b"); + GitObject gitObject = repo.Lookup("refs/tags/e90810b"); gitObject.ShouldNotBeNull(); Assert.IsInstanceOf(gitObject); } @@ -199,8 +198,8 @@ public void CanLookupSameObjectTwiceAndTheyAreEqual() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var commit = repo.Lookup(commitSha); - var commit2 = repo.Lookup(commitSha); + GitObject commit = repo.Lookup(commitSha); + GitObject commit2 = repo.Lookup(commitSha); commit.Equals(commit2).ShouldBeTrue(); commit.GetHashCode().ShouldEqual(commit2.GetHashCode()); } @@ -245,7 +244,7 @@ public void CanLookupWhithShortIdentifers() using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath); + string dir = Repository.Init(scd.DirectoryPath); using (var repo = new Repository(dir)) { @@ -254,15 +253,15 @@ public void CanLookupWhithShortIdentifers() File.WriteAllText(filePath, "one "); repo.Index.Stage(filePath); - var author = Constants.Signature; - var commit = repo.Commit(author, author, "Initial commit"); + Signature author = Constants.Signature; + Commit commit = repo.Commit(author, author, "Initial commit"); commit.Sha.ShouldEqual(expectedSha); - var lookedUp1 = repo.Lookup(expectedSha); + GitObject lookedUp1 = repo.Lookup(expectedSha); lookedUp1.ShouldEqual(commit); - var lookedUp2 = repo.Lookup(expectedAbbrevSha); + GitObject lookedUp2 = repo.Lookup(expectedAbbrevSha); lookedUp2.ShouldEqual(commit); } } @@ -339,4 +338,4 @@ public void CanDiscoverAStandardRepoGivenTheWorkingDirPath() path.ShouldEqual(Path.GetFullPath(Constants.StandardTestRepoPath + Path.DirectorySeparatorChar)); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs index bd9bb3d89..989e1ead5 100644 --- a/LibGit2Sharp.Tests/TagFixture.cs +++ b/LibGit2Sharp.Tests/TagFixture.cs @@ -24,7 +24,7 @@ public void CanCreateALightWeightTagFromSha() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("i_am_lightweight", commitE90810BSha); + Tag newTag = repo.Tags.Create("i_am_lightweight", commitE90810BSha); newTag.ShouldNotBeNull(); newTag.IsAnnotated.ShouldBeFalse(); } @@ -36,7 +36,7 @@ public void CanCreateALightWeightTagFromAbbreviatedSha() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("i_am_lightweight", commitE90810BSha.Substring(0, 17)); + Tag newTag = repo.Tags.Create("i_am_lightweight", commitE90810BSha.Substring(0, 17)); newTag.ShouldNotBeNull(); newTag.IsAnnotated.ShouldBeFalse(); } @@ -48,7 +48,7 @@ public void CanCreateALightweightTagFromABranchName() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("i_am_lightweight", "refs/heads/master"); + Tag newTag = repo.Tags.Create("i_am_lightweight", "refs/heads/master"); newTag.IsAnnotated.ShouldBeFalse(); newTag.ShouldNotBeNull(); } @@ -60,7 +60,7 @@ public void CanCreateAndOverwriteALightweightTag() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("e90810b", commitE90810BSha, true); + Tag newTag = repo.Tags.Create("e90810b", commitE90810BSha, true); newTag.ShouldNotBeNull(); newTag.IsAnnotated.ShouldBeFalse(); } @@ -73,14 +73,14 @@ public void CanCreateATagWithNameContainingASlash() using (var repo = new Repository(path.RepositoryPath)) { const string lwTagName = "i/am/deep"; - var lwTag = repo.Tags.Create(lwTagName, commitE90810BSha); + Tag lwTag = repo.Tags.Create(lwTagName, commitE90810BSha); lwTag.ShouldNotBeNull(); lwTag.IsAnnotated.ShouldBeFalse(); lwTag.Target.Sha.ShouldEqual(commitE90810BSha); lwTag.Name.ShouldEqual(lwTagName); const string anTagName = lwTagName + "_as_well"; - var anTag = repo.Tags.Create(anTagName, commitE90810BSha, signatureNtk, "a nice message"); + Tag anTag = repo.Tags.Create(anTagName, commitE90810BSha, signatureNtk, "a nice message"); anTag.ShouldNotBeNull(); anTag.IsAnnotated.ShouldBeTrue(); anTag.Target.Sha.ShouldEqual(commitE90810BSha); @@ -107,7 +107,7 @@ public void CanCreateAnAnnotatedTagFromABranchName() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("unit_test", "refs/heads/master", signatureTim, "a new tag"); + Tag newTag = repo.Tags.Create("unit_test", "refs/heads/master", signatureTim, "a new tag"); newTag.IsAnnotated.ShouldBeTrue(); newTag.ShouldNotBeNull(); } @@ -119,7 +119,7 @@ public void CanCreateAnAnnotatedTagFromSha() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("unit_test", tagTestSha, signatureTim, "a new tag"); + Tag newTag = repo.Tags.Create("unit_test", tagTestSha, signatureTim, "a new tag"); newTag.ShouldNotBeNull(); newTag.IsAnnotated.ShouldBeTrue(); } @@ -132,7 +132,7 @@ public void CanCreateAnAnnotatedTagWithAnEmptyMessage() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.ApplyTag("empty-annotated-tag", signatureNtk, string.Empty); + Tag newTag = repo.ApplyTag("empty-annotated-tag", signatureNtk, string.Empty); newTag.ShouldNotBeNull(); newTag.IsAnnotated.ShouldBeTrue(); newTag.Annotation.Message.ShouldEqual(string.Empty); @@ -145,7 +145,7 @@ public void CanCreateAndOverwriteAnAnnotatedTag() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create("e90810b", tagTestSha, signatureTim, "a new tag", true); + Tag newTag = repo.Tags.Create("e90810b", tagTestSha, signatureTim, "a new tag", true); newTag.ShouldNotBeNull(); newTag.IsAnnotated.ShouldBeTrue(); } @@ -160,7 +160,7 @@ public void CreatingAnAnnotatedTagIsDeterministic() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var newTag = repo.Tags.Create(tagName, commitE90810BSha, signatureNtk, tagMessage); + Tag newTag = repo.Tags.Create(tagName, commitE90810BSha, signatureNtk, tagMessage); newTag.Target.Sha.ShouldEqual(commitE90810BSha); newTag.IsAnnotated.ShouldBeTrue(); newTag.Annotation.Sha.ShouldEqual("24f6de34a108d931c6056fc4687637fe36c6bd6b"); @@ -174,7 +174,7 @@ public void CreatingATagInAEmptyRepositoryThrows() { using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath); + string dir = Repository.Init(scd.DirectoryPath); using (var repo = new Repository(dir)) { @@ -189,7 +189,7 @@ public void CreatingATagForHeadInAEmptyRepositoryThrows() { using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath); + string dir = Repository.Init(scd.DirectoryPath); using (var repo = new Repository(dir)) { @@ -227,12 +227,12 @@ public void CanCreateATagForImplicitHead() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var tag = repo.ApplyTag("mytag"); + Tag tag = repo.ApplyTag("mytag"); tag.ShouldNotBeNull(); tag.Target.Id.ShouldEqual(repo.Head.Tip.Id); - var retrievedTag = repo.Tags[tag.CanonicalName]; + Tag retrievedTag = repo.Tags[tag.CanonicalName]; tag.ShouldEqual(retrievedTag); } } @@ -272,12 +272,12 @@ public void CanCreateATagUsingHead() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var tag = repo.ApplyTag("mytag", "HEAD"); + Tag tag = repo.ApplyTag("mytag", "HEAD"); tag.ShouldNotBeNull(); tag.Target.Id.ShouldEqual(repo.Head.Tip.Id); - var retrievedTag = repo.Tags[tag.CanonicalName]; + Tag retrievedTag = repo.Tags[tag.CanonicalName]; tag.ShouldEqual(retrievedTag); } } @@ -288,10 +288,10 @@ public void CanCreateATagPointingToATree() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var headCommit = repo.Head.Tip; - var tree = headCommit.Tree; + Commit headCommit = repo.Head.Tip; + Tree tree = headCommit.Tree; - var tag = repo.ApplyTag("tree-tag", tree.Sha); + Tag tag = repo.ApplyTag("tree-tag", tree.Sha); tag.ShouldNotBeNull(); tag.IsAnnotated.ShouldBeFalse(); tag.Target.Id.ShouldEqual(tree.Id); @@ -307,10 +307,10 @@ public void CanCreateATagPointingToABlob() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var headCommit = (Commit)repo.Head.Tip; - var blob = headCommit.Tree.Files.First(); + Commit headCommit = repo.Head.Tip; + Blob blob = headCommit.Tree.Files.First(); - var tag = repo.ApplyTag("blob-tag", blob.Sha); + Tag tag = repo.ApplyTag("blob-tag", blob.Sha); tag.ShouldNotBeNull(); tag.IsAnnotated.ShouldBeFalse(); tag.Target.Id.ShouldEqual(blob.Id); @@ -326,10 +326,10 @@ public void CreatingALightweightTagPointingToATagAnnotationGeneratesAnAnnotatedT using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var annotatedTag = repo.Tags["e90810b"]; - var annotation = annotatedTag.Annotation; + Tag annotatedTag = repo.Tags["e90810b"]; + TagAnnotation annotation = annotatedTag.Annotation; - var tag = repo.ApplyTag("lightweight-tag", annotation.Sha); + Tag tag = repo.ApplyTag("lightweight-tag", annotation.Sha); tag.ShouldNotBeNull(); tag.IsAnnotated.ShouldBeTrue(); tag.Target.Id.ShouldEqual(annotation.Target.Id); @@ -346,10 +346,10 @@ public void CanCreateAnAnnotatedTagPointingToATagAnnotation() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - var annotatedTag = repo.Tags["e90810b"]; - var annotation = annotatedTag.Annotation; + Tag annotatedTag = repo.Tags["e90810b"]; + TagAnnotation annotation = annotatedTag.Annotation; - var tag = repo.ApplyTag("annotatedtag-tag", annotation.Sha, signatureNtk, "A new annotation"); + Tag tag = repo.ApplyTag("annotatedtag-tag", annotation.Sha, signatureNtk, "A new annotation"); tag.ShouldNotBeNull(); tag.IsAnnotated.ShouldBeTrue(); tag.Annotation.Target.Id.ShouldEqual(annotation.Id); @@ -461,7 +461,6 @@ public void CanDeleteATagThroughItsName() } } - [Test] public void CanDeleteATagThroughItsCanonicalName() { @@ -493,12 +492,12 @@ public void DeletingATagDecreasesTheTagsCount() { const string tagName = "e90810b"; - var tags = repo.Tags.Select(r => r.Name).ToList(); + List tags = repo.Tags.Select(r => r.Name).ToList(); tags.Contains(tagName).ShouldBeTrue(); repo.Tags.Delete(tagName); - var tags2 = repo.Tags.Select(r => r.Name).ToList(); + List tags2 = repo.Tags.Select(r => r.Name).ToList(); tags2.Contains(tagName).ShouldBeFalse(); tags2.Count.ShouldEqual(tags.Count - 1); @@ -520,7 +519,7 @@ public void CanListTags() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (var tag in repo.Tags) + foreach (Tag tag in repo.Tags) { expectedTags.Contains(tag.Name).ShouldBeTrue(); } @@ -534,7 +533,7 @@ public void CanListAllTagsInAEmptyRepository() { using (var scd = new SelfCleaningDirectory()) { - var dir = Repository.Init(scd.DirectoryPath); + string dir = Repository.Init(scd.DirectoryPath); using (var repo = new Repository(dir)) { @@ -552,7 +551,7 @@ public void ListAllTagsShouldOutputThemInAnOrderedWay() { List tagNames = repo.Tags.Select(t => t.Name).ToList(); - var sortedTags = expectedTags; + List sortedTags = expectedTags; sortedTags.Sort(); CollectionAssert.AreEqual(sortedTags, tagNames); @@ -564,7 +563,7 @@ public void CanLookupALightweightTag() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var tag = repo.Tags["lw"]; + Tag tag = repo.Tags["lw"]; tag.ShouldNotBeNull(); tag.Name.ShouldEqual("lw"); tag.Target.Sha.ShouldEqual(commitE90810BSha); @@ -579,11 +578,11 @@ public void CanLookupATagByItsCanonicalName() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var tag = repo.Tags["refs/tags/lw"]; + Tag tag = repo.Tags["refs/tags/lw"]; tag.ShouldNotBeNull(); tag.Name.ShouldEqual("lw"); - var tag2 = repo.Tags["refs/tags/lw"]; + Tag tag2 = repo.Tags["refs/tags/lw"]; tag2.ShouldNotBeNull(); tag2.Name.ShouldEqual("lw"); @@ -597,7 +596,7 @@ public void CanLookupAnAnnotatedTag() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var tag = repo.Tags["e90810b"]; + Tag tag = repo.Tags["e90810b"]; tag.ShouldNotBeNull(); tag.Name.ShouldEqual("e90810b"); tag.Target.Sha.ShouldEqual(commitE90810BSha); @@ -617,7 +616,7 @@ public void LookupEmptyTagNameThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => { var t = repo.Tags[string.Empty]; }); + Assert.Throws(() => { Tag t = repo.Tags[string.Empty]; }); } } @@ -626,8 +625,8 @@ public void LookupNullTagNameThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => { var t = repo.Tags[null]; }); + Assert.Throws(() => { Tag t = repo.Tags[null]; }); } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TestHelpers/AssertExtensions.cs b/LibGit2Sharp.Tests/TestHelpers/AssertExtensions.cs index ba637b885..b2762b343 100644 --- a/LibGit2Sharp.Tests/TestHelpers/AssertExtensions.cs +++ b/LibGit2Sharp.Tests/TestHelpers/AssertExtensions.cs @@ -53,4 +53,4 @@ public static void ShouldNotEqual(this object compareFrom, object compareTo) #endregion } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs index 8dfaae3d6..f4fa93e28 100644 --- a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs +++ b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs @@ -1,6 +1,4 @@ -using System; -using System.IO; -using System.Text; +using System.IO; namespace LibGit2Sharp.Tests.TestHelpers { diff --git a/LibGit2Sharp.Tests/TestHelpers/Constants.cs b/LibGit2Sharp.Tests/TestHelpers/Constants.cs index 3a92c2e1d..d2878ac5b 100644 --- a/LibGit2Sharp.Tests/TestHelpers/Constants.cs +++ b/LibGit2Sharp.Tests/TestHelpers/Constants.cs @@ -7,9 +7,9 @@ public static class Constants { public const string BareTestRepoPath = "./Resources/testrepo.git"; public const string StandardTestRepoWorkingDirPath = "./Resources/testrepo_wd"; - public static string StandardTestRepoPath = Path.Combine(StandardTestRepoWorkingDirPath, ".git"); + public static string StandardTestRepoPath = Path.Combine(StandardTestRepoWorkingDirPath, ".git"); public const string TemporaryReposPath = "TestRepos"; public const string UnknownSha = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"; public static readonly Signature Signature = new Signature("A. U. Thor", "thor@valhalla.asgard.com", new DateTimeOffset(2011, 06, 16, 10, 58, 27, TimeSpan.FromHours(2))); } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TestHelpers/DirectoryHelper.cs b/LibGit2Sharp.Tests/TestHelpers/DirectoryHelper.cs index 5f4f3b3df..6c44ea866 100644 --- a/LibGit2Sharp.Tests/TestHelpers/DirectoryHelper.cs +++ b/LibGit2Sharp.Tests/TestHelpers/DirectoryHelper.cs @@ -8,10 +8,14 @@ public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo targ { // From http://stackoverflow.com/questions/58744/best-way-to-copy-the-entire-contents-of-a-directory-in-c/58779#58779 - foreach (var dir in source.GetDirectories()) + foreach (DirectoryInfo dir in source.GetDirectories()) + { CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name)); - foreach (var file in source.GetFiles()) + } + foreach (FileInfo file in source.GetFiles()) + { file.CopyTo(Path.Combine(target.FullName, file.Name)); + } } public static void DeleteDirectory(string directoryPath) @@ -36,4 +40,4 @@ public static void DeleteDirectory(string directoryPath) Directory.Delete(directoryPath, false); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs b/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs index 154ee1757..cadbdfb1f 100644 --- a/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs +++ b/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs @@ -20,7 +20,6 @@ public SelfCleaningDirectory(string path) RootedDirectoryPath = Path.GetFullPath(path); } - public string DirectoryPath { get; private set; } public string RootedDirectoryPath { get; private set; } @@ -43,4 +42,4 @@ protected static string BuildTempPath() return Path.Combine(Constants.TemporaryReposPath, Guid.NewGuid().ToString().Substring(0, 8)); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TestHelpers/SignatureExtensions.cs b/LibGit2Sharp.Tests/TestHelpers/SignatureExtensions.cs index f65d882e1..1f0c2a601 100644 --- a/LibGit2Sharp.Tests/TestHelpers/SignatureExtensions.cs +++ b/LibGit2Sharp.Tests/TestHelpers/SignatureExtensions.cs @@ -9,4 +9,4 @@ public static Signature TimeShift(this Signature signature, TimeSpan shift) return new Signature(signature.Name, signature.Email, signature.When.Add(shift)); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs b/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs index eb6c54255..0e237dd72 100644 --- a/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs +++ b/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs @@ -31,4 +31,4 @@ public TemporaryCloneOfTestRepo(string sourceDirectoryPath = Constants.BareTestR public string RepositoryPath { get; private set; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp.Tests/TreeFixture.cs b/LibGit2Sharp.Tests/TreeFixture.cs index 3622898fc..339c7ab6e 100755 --- a/LibGit2Sharp.Tests/TreeFixture.cs +++ b/LibGit2Sharp.Tests/TreeFixture.cs @@ -76,7 +76,7 @@ public void CanEnumerateTreeEntries() var tree = repo.Lookup(sha); tree.Count().ShouldEqual(tree.Count); - CollectionAssert.AreEqual(new[] {"1", "README", "branch_file.txt", "new.txt"}, tree.Select(te => te.Name).ToArray()); + CollectionAssert.AreEqual(new[] { "1", "README", "branch_file.txt", "new.txt" }, tree.Select(te => te.Name).ToArray()); } } @@ -138,9 +138,9 @@ public void TreeDataIsPresent() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - var tree = repo.Lookup(sha); + GitObject tree = repo.Lookup(sha); tree.ShouldNotBeNull(); } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/AbbreviatedObjectId.cs b/LibGit2Sharp/AbbreviatedObjectId.cs index cda126168..b6e01b9a3 100644 --- a/LibGit2Sharp/AbbreviatedObjectId.cs +++ b/LibGit2Sharp/AbbreviatedObjectId.cs @@ -17,6 +17,9 @@ internal AbbreviatedObjectId(GitOid oid, int length) : base(oid) public int Length { get; private set; } - public override string Sha { get { return base.Sha.Substring(0, Length); } } + public override string Sha + { + get { return base.Sha.Substring(0, Length); } + } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Blob.cs b/LibGit2Sharp/Blob.cs index 3019333b5..c9d716607 100644 --- a/LibGit2Sharp/Blob.cs +++ b/LibGit2Sharp/Blob.cs @@ -40,7 +40,7 @@ public Stream ContentStream IntPtr ptr = NativeMethods.git_blob_rawcontent(obj.ObjectPtr); unsafe { - return new UnmanagedMemoryStream((byte*) ptr.ToPointer(), Size); + return new UnmanagedMemoryStream((byte*)ptr.ToPointer(), Size); } } } @@ -65,4 +65,4 @@ public static Blob BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) return blob; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Branch.cs b/LibGit2Sharp/Branch.cs index e4eeef210..f64dee5f4 100644 --- a/LibGit2Sharp/Branch.cs +++ b/LibGit2Sharp/Branch.cs @@ -10,7 +10,7 @@ namespace LibGit2Sharp public class Branch : IEquatable { private static readonly LambdaEqualityHelper equalityHelper = - new LambdaEqualityHelper(new Func[] {x => x.CanonicalName, x => x.Tip}); + new LambdaEqualityHelper(new Func[] { x => x.CanonicalName, x => x.Tip }); private readonly Repository repo; private readonly Lazy tipBuilder; @@ -28,13 +28,13 @@ internal Branch(string canonicalName, ObjectId targetId, Repository repo) /// /// Initializes a new instance of an orphaned class. - /// - /// This instance will point to no commit. - /// + /// + /// This instance will point to no commit. + /// /// /// The repo. /// The full name of the reference - internal Branch(string canonicalName, Repository repo) + internal Branch(string canonicalName, Repository repo) : this(canonicalName, new Lazy(() => null), repo) { } @@ -88,14 +88,17 @@ public bool IsCurrentRepositoryHead /// /// Gets the commit id that this branch points to. /// - public Commit Tip { get { return tipBuilder.Value; } } + public Commit Tip + { + get { return tipBuilder.Value; } + } /// /// Gets the commits on this branch. (Starts walking from the References's target). /// public ICommitCollection Commits { - get { return repo.Commits.QueryBy(new Filter{Since = this}); } + get { return repo.Commits.QueryBy(new Filter { Since = this }); } } #region IEquatable Members @@ -148,7 +151,7 @@ private static string ShortenName(string branchName) return branchName.Substring("refs/remotes/".Length); } - throw new ArgumentException(string.Format(CultureInfo.InvariantCulture,"'{0}' does not look like a valid branch name.", branchName)); + throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "'{0}' does not look like a valid branch name.", branchName)); } /// @@ -174,12 +177,12 @@ private static string ShortenName(string branchName) } /// - /// Returns the , a representation of the current . + /// Returns the , a representation of the current . /// - /// The that represents the current . + /// The that represents the current . public override string ToString() { return CanonicalName; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/BranchCollection.cs b/LibGit2Sharp/BranchCollection.cs index 578c8c4df..b8b40a4e9 100644 --- a/LibGit2Sharp/BranchCollection.cs +++ b/LibGit2Sharp/BranchCollection.cs @@ -34,9 +34,9 @@ public Branch this[string name] #region IEnumerable Members /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { return Libgit2UnsafeHelper.ListAllReferenceNames(repo.Handle, GitReferenceType.ListAll) @@ -46,9 +46,9 @@ public IEnumerator GetEnumerator() } /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); @@ -84,7 +84,7 @@ public Branch Create(string name, string target) if (!ObjectId.TryParse(target, out id)) { - var reference = repo.Refs[NormalizeToCanonicalName(target)].ResolveToDirectReference(); + DirectReference reference = repo.Refs[NormalizeToCanonicalName(target)].ResolveToDirectReference(); target = reference.TargetIdentifier; } @@ -104,11 +104,11 @@ public void Delete(string name) } /// - /// Rename an existing branch with a new name. + /// Rename an existing branch with a new name. /// - ///The current branch name. - ///The new name of the existing branch should bear. - ///True to allow silent overwriting a potentially existing branch, false otherwise. + ///The current branch name. + ///The new name of the existing branch should bear. + ///True to allow silent overwriting a potentially existing branch, false otherwise. /// public Branch Move(string currentName, string newName, bool allowOverwrite = false) { @@ -116,7 +116,7 @@ public Branch Move(string currentName, string newName, bool allowOverwrite = fal Ensure.ArgumentNotNullOrEmptyString(newName, "name"); Reference reference = repo.Refs.Move(NormalizeToCanonicalName(currentName), NormalizeToCanonicalName(newName), - allowOverwrite); + allowOverwrite); return this[reference.CanonicalName]; } @@ -138,4 +138,4 @@ private static string NormalizeToCanonicalName(string name) return string.Format(CultureInfo.InvariantCulture, "refs/heads/{0}", name); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Commit.cs b/LibGit2Sharp/Commit.cs index 3be4d3c51..8ec4e4ae3 100644 --- a/LibGit2Sharp/Commit.cs +++ b/LibGit2Sharp/Commit.cs @@ -16,8 +16,8 @@ public class Commit : GitObject internal Commit(ObjectId id, ObjectId treeId, Repository repo) : base(id) { - this.tree = new Lazy(() => repo.Lookup(treeId)); - this.parents = new Lazy>(() => RetrieveParentsOfCommit(id.Oid)); + tree = new Lazy(() => repo.Lookup(treeId)); + parents = new Lazy>(() => RetrieveParentsOfCommit(id.Oid)); this.repo = repo; } @@ -44,17 +44,23 @@ internal Commit(ObjectId id, ObjectId treeId, Repository repo) : base(id) /// /// Gets the Tree associated to this commit. /// - public Tree Tree { get { return tree.Value; } } + public Tree Tree + { + get { return tree.Value; } + } /// /// Gets the parents of this commit. This property is lazy loaded and can throw an exception if the commit no longer exists in the repo. /// - public IEnumerable Parents { get { return parents.Value; } } + public IEnumerable Parents + { + get { return parents.Value; } + } - private IEnumerable RetrieveParentsOfCommit(GitOid oid) //TODO: Convert to a ParentEnumerator + private IEnumerable RetrieveParentsOfCommit(GitOid oid) //TODO: Convert to a ParentEnumerator { IntPtr obj; - var res = NativeMethods.git_object_lookup(out obj, repo.Handle, ref oid, GitObjectType.Commit); + int res = NativeMethods.git_object_lookup(out obj, repo.Handle, ref oid, GitObjectType.Commit); Ensure.Success(res); var parentsOfCommits = new List(); @@ -82,15 +88,15 @@ private IEnumerable RetrieveParentsOfCommit(GitOid oid) //TODO: Conve internal static Commit BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) { var treeId = - new ObjectId((GitOid) Marshal.PtrToStructure(NativeMethods.git_commit_tree_oid(obj), typeof (GitOid))); + new ObjectId((GitOid)Marshal.PtrToStructure(NativeMethods.git_commit_tree_oid(obj), typeof(GitOid))); return new Commit(id, treeId, repo) - { - Message = NativeMethods.git_commit_message(obj).MarshallAsString(), - MessageShort = NativeMethods.git_commit_message_short(obj).MarshallAsString(), - Author = new Signature(NativeMethods.git_commit_author(obj)), - Committer = new Signature(NativeMethods.git_commit_committer(obj)), - }; + { + Message = NativeMethods.git_commit_message(obj).MarshallAsString(), + MessageShort = NativeMethods.git_commit_message_short(obj).MarshallAsString(), + Author = new Signature(NativeMethods.git_commit_author(obj)), + Committer = new Signature(NativeMethods.git_commit_committer(obj)), + }; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/CommitCollection.cs b/LibGit2Sharp/CommitCollection.cs index bf87512e9..af7358f30 100644 --- a/LibGit2Sharp/CommitCollection.cs +++ b/LibGit2Sharp/CommitCollection.cs @@ -18,8 +18,8 @@ public class CommitCollection : IQueryableCommitCollection private readonly GitSortOptions sortOptions; /// - /// Initializes a new instance of the class. - /// The commits will be enumerated according in reverse chronological order. + /// Initializes a new instance of the class. + /// The commits will be enumerated according in reverse chronological order. /// /// The repository. internal CommitCollection(Repository repo) @@ -39,7 +39,7 @@ internal CommitCollection(Repository repo, GitSortOptions sortingStrategy) } /// - /// Gets the current sorting strategy applied when enumerating the collection + /// Gets the current sorting strategy applied when enumerating the collection /// public GitSortOptions SortedBy { @@ -49,9 +49,9 @@ public GitSortOptions SortedBy #region IEnumerable Members /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { if ((repo.Info.IsEmpty) && includedIdentifier.Any(o => PointsAtTheHead(o.ToString()))) // TODO: ToString() == fragile @@ -63,9 +63,9 @@ public IEnumerator GetEnumerator() } /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); @@ -74,9 +74,9 @@ IEnumerator IEnumerable.GetEnumerator() #endregion /// - /// Returns the list of commits of the repository matching the specified . + /// Returns the list of commits of the repository matching the specified . /// - /// The options used to control which commits will be returned. + /// The options used to control which commits will be returned. /// A collection of commits, ready to be enumerated. public ICommitCollection QueryBy(Filter filter) { @@ -96,14 +96,16 @@ private static IList ToList(object obj) var list = new List(); if (obj == null) + { return list; + } var types = new[] { - typeof (string), typeof (ObjectId), - typeof (Commit), typeof(TagAnnotation), - typeof (Tag), typeof (Branch), - typeof (Reference), typeof (DirectReference), typeof (SymbolicReference) + typeof(string), typeof(ObjectId), + typeof(Commit), typeof(TagAnnotation), + typeof(Tag), typeof(Branch), + typeof(Reference), typeof(DirectReference), typeof(SymbolicReference) }; if (types.Contains(obj.GetType())) @@ -122,12 +124,12 @@ private static bool PointsAtTheHead(string shaOrRefName) } /// - /// Stores the content of the as a new into the repository. + /// Stores the content of the as a new into the repository. /// - /// The of who made the change. - /// The of who added the change to the repository. - /// The description of why a change was made to the repository. - /// The generated . + /// The of who made the change. + /// The of who added the change to the repository. + /// The description of why a change was made to the repository. + /// The generated . public Commit Create(Signature author, Signature committer, string message) { GitOid treeOid; @@ -138,11 +140,11 @@ public Commit Create(Signature author, Signature committer, string message) GitOid commitOid; using (var treePtr = new ObjectSafeWrapper(new ObjectId(treeOid), repo)) - using (var headPtr = RetrieveHeadCommitPtr(head)) + using (ObjectSafeWrapper headPtr = RetrieveHeadCommitPtr(head)) { - var parentPtrs = BuildArrayFrom(headPtr); + IntPtr[] parentPtrs = BuildArrayFrom(headPtr); res = NativeMethods.git_commit_create(out commitOid, repo.Handle, head.CanonicalName, author.Handle, - committer.Handle, message, treePtr.ObjectPtr, parentPtrs.Count(), parentPtrs); + committer.Handle, message, treePtr.ObjectPtr, parentPtrs.Count(), parentPtrs); } Ensure.Success(res); @@ -156,12 +158,11 @@ private static IntPtr[] BuildArrayFrom(ObjectSafeWrapper headPtr) return new IntPtr[] { }; } - return new IntPtr[] { headPtr.ObjectPtr }; + return new[] { headPtr.ObjectPtr }; } private ObjectSafeWrapper RetrieveHeadCommitPtr(Reference head) { - DirectReference oidRef = head.ResolveToDirectReference(); if (oidRef == null) { @@ -211,7 +212,7 @@ object IEnumerator.Current public bool MoveNext() { GitOid oid; - var res = NativeMethods.git_revwalk_next(out oid, handle); + int res = NativeMethods.git_revwalk_next(out oid, handle); if (res == (int)GitErrorCode.GIT_EREVWALKOVER) { @@ -252,11 +253,11 @@ private void Dispose(bool disposing) private void InternalHidePush(IList identifier, HidePushSignature hidePush) { - var oids = RetrieveCommitOids(identifier); + IEnumerable oids = RetrieveCommitOids(identifier); - foreach (var actedOn in oids) + foreach (ObjectId actedOn in oids) { - var oid = actedOn.Oid; + GitOid oid = actedOn.Oid; int res = hidePush(handle, ref oid); Ensure.Success(res); } @@ -372,9 +373,9 @@ private IEnumerable RetrieveCommitOids(object identifier) { var enumerable = (IEnumerable)identifier; - foreach (var entry in enumerable) + foreach (object entry in enumerable) { - foreach (var oid in RetrieveCommitOids(entry)) + foreach (ObjectId oid in RetrieveCommitOids(entry)) { yield return oid; } @@ -387,4 +388,4 @@ private IEnumerable RetrieveCommitOids(object identifier) } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/Ensure.cs b/LibGit2Sharp/Core/Ensure.cs index 1eb942ed0..1d4b43853 100644 --- a/LibGit2Sharp/Core/Ensure.cs +++ b/LibGit2Sharp/Core/Ensure.cs @@ -38,16 +38,16 @@ public static void ArgumentNotNullOrEmptyString(string argumentValue, string arg /// /// Check that the result of a C call was successful - /// - /// This usually means that the method is expected to return 0. - /// In some rare cases, some methods may return negative values for errors and - /// positive values carrying information. Those positive values should be interpreted - /// as successful calls as well. - /// + /// + /// This usually means that the method is expected to return 0. + /// In some rare cases, some methods may return negative values for errors and + /// positive values carrying information. Those positive values should be interpreted + /// as successful calls as well. + /// /// /// The result to examine. - /// False to only allow success when comparing against 0, - /// True when positive values are allowed as well. + /// False to only allow success when comparing against 0, + /// True when positive values are allowed as well. public static void Success(int result, bool allowPositiveResult = false) { if (result == (int)GitErrorCode.GIT_SUCCESS) @@ -82,4 +82,4 @@ public static void ArgumentConformsTo(T argumentValue, Func checker, throw new ArgumentException(argumentName); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/Epoch.cs b/LibGit2Sharp/Core/Epoch.cs index 0e2ff0baa..101883f65 100644 --- a/LibGit2Sharp/Core/Epoch.cs +++ b/LibGit2Sharp/Core/Epoch.cs @@ -3,34 +3,34 @@ namespace LibGit2Sharp.Core { /// - /// Provides helper methods to help converting between Epoch (unix timestamp) and . + /// Provides helper methods to help converting between Epoch (unix timestamp) and . /// public static class Epoch { private static readonly DateTimeOffset epochDateTimeOffset = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); /// - /// Builds a from a Unix timestamp and a timezone offset. + /// Builds a from a Unix timestamp and a timezone offset. /// - /// The number of seconds since 00:00:00 UTC on 1 January 1970. - /// The number of minutes from UTC in a timezone. - /// A representing this instant. + /// The number of seconds since 00:00:00 UTC on 1 January 1970. + /// The number of minutes from UTC in a timezone. + /// A representing this instant. public static DateTimeOffset ToDateTimeOffset(long secondsSinceEpoch, int timeZoneOffsetInMinutes) { - var utcDateTime = epochDateTimeOffset.AddSeconds(secondsSinceEpoch); - var offset = TimeSpan.FromMinutes(timeZoneOffsetInMinutes); + DateTimeOffset utcDateTime = epochDateTimeOffset.AddSeconds(secondsSinceEpoch); + TimeSpan offset = TimeSpan.FromMinutes(timeZoneOffsetInMinutes); return new DateTimeOffset(utcDateTime.DateTime.Add(offset), offset); } /// - /// Converts the part of a into a Unix timestamp. + /// Converts the part of a into a Unix timestamp. /// - /// The to convert. + /// The to convert. /// The number of seconds since 00:00:00 UTC on 1 January 1970. public static Int32 ToSecondsSinceEpoch(this DateTimeOffset date) { - var utcDate = date.ToUniversalTime(); - return (Int32) utcDate.Subtract(epochDateTimeOffset).TotalSeconds; + DateTimeOffset utcDate = date.ToUniversalTime(); + return (Int32)utcDate.Subtract(epochDateTimeOffset).TotalSeconds; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitErrorCode.cs b/LibGit2Sharp/Core/GitErrorCode.cs index a73bfbe78..20fbf766d 100644 --- a/LibGit2Sharp/Core/GitErrorCode.cs +++ b/LibGit2Sharp/Core/GitErrorCode.cs @@ -3,161 +3,161 @@ internal enum GitErrorCode { /// - /// Operation completed successfully. + /// Operation completed successfully. /// GIT_SUCCESS = 0, /// - /// Operation failed, with unspecified reason. - /// This value also serves as the base error code; all other - /// error codes are subtracted from it such that all errors - /// are < 0, in typical POSIX C tradition. + /// Operation failed, with unspecified reason. + /// This value also serves as the base error code; all other + /// error codes are subtracted from it such that all errors + /// are < 0, in typical POSIX C tradition. /// GIT_ERROR = -1, /// - /// Input was not a properly formatted Git object id. + /// Input was not a properly formatted Git object id. /// GIT_ENOTOID = -2, /// - /// Input does not exist in the scope searched. + /// Input does not exist in the scope searched. /// GIT_ENOTFOUND = -3, /// - /// Not enough space available. + /// Not enough space available. /// GIT_ENOMEM = -4, /// - /// Consult the OS error information. + /// Consult the OS error information. /// GIT_EOSERR = -5, /// - /// The specified object is of invalid type + /// The specified object is of invalid type /// GIT_EOBJTYPE = -6, /// - /// The specified repository is invalid + /// The specified repository is invalid /// GIT_ENOTAREPO = -7, /// - /// The object type is invalid or doesn't match + /// The object type is invalid or doesn't match /// GIT_EINVALIDTYPE = -8, /// - /// The object cannot be written that because it's missing internal data + /// The object cannot be written that because it's missing internal data /// GIT_EMISSINGOBJDATA = -9, /// - /// The packfile for the ODB is corrupted + /// The packfile for the ODB is corrupted /// GIT_EPACKCORRUPTED = -10, /// - /// Failed to adquire or release a file lock + /// Failed to adquire or release a file lock /// GIT_EFLOCKFAIL = -11, /// - /// The Z library failed to inflate/deflate an object's data + /// The Z library failed to inflate/deflate an object's data /// GIT_EZLIB = -12, /// - /// The queried object is currently busy + /// The queried object is currently busy /// GIT_EBUSY = -13, /// - /// The index file is not backed up by an existing repository + /// The index file is not backed up by an existing repository /// GIT_EBAREINDEX = -14, /// - /// The name of the reference is not valid + /// The name of the reference is not valid /// GIT_EINVALIDREFNAME = -15, /// - /// The specified reference has its data corrupted + /// The specified reference has its data corrupted /// GIT_EREFCORRUPTED = -16, /// - /// The specified symbolic reference is too deeply nested + /// The specified symbolic reference is too deeply nested /// GIT_ETOONESTEDSYMREF = -17, /// - /// The pack-refs file is either corrupted of its format is not currently supported + /// The pack-refs file is either corrupted of its format is not currently supported /// GIT_EPACKEDREFSCORRUPTED = -18, /// - /// The path is invalid + /// The path is invalid /// GIT_EINVALIDPATH = -19, /// - /// The revision walker is empty; there are no more commits left to iterate + /// The revision walker is empty; there are no more commits left to iterate /// GIT_EREVWALKOVER = -20, /// - /// The state of the reference is not valid + /// The state of the reference is not valid /// GIT_EINVALIDREFSTATE = -21, /// - /// This feature has not been implemented yet + /// This feature has not been implemented yet /// GIT_ENOTIMPLEMENTED = -22, /// - /// A reference with this name already exists + /// A reference with this name already exists /// GIT_EEXISTS = -23, /// - /// The given integer literal is too large to be parsed + /// The given integer literal is too large to be parsed /// GIT_EOVERFLOW = -24, /// - /// The given literal is not a valid number + /// The given literal is not a valid number /// GIT_ENOTNUM = -25, /// - /// Streaming error + /// Streaming error /// GIT_ESTREAM = -26, /// - /// invalid arguments to function + /// invalid arguments to function /// GIT_EINVALIDARGS = -27, /// - /// The specified object has its data corrupted + /// The specified object has its data corrupted /// GIT_EOBJCORRUPTED = -28, /// - /// The given short oid is ambiguous + /// The given short oid is ambiguous /// GIT_EAMBIGUOUSOIDPREFIX = -29, /// - /// Skip and passthrough the given ODB backend + /// Skip and passthrough the given ODB backend /// GIT_EPASSTHROUGH = -30, } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitIndexEntry.cs b/LibGit2Sharp/Core/GitIndexEntry.cs index 8cffa5e9e..2066cb0bb 100644 --- a/LibGit2Sharp/Core/GitIndexEntry.cs +++ b/LibGit2Sharp/Core/GitIndexEntry.cs @@ -18,4 +18,4 @@ internal class GitIndexEntry public ushort ExtendedFlags; public string Path; } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitIndexTime.cs b/LibGit2Sharp/Core/GitIndexTime.cs index e8b2c906c..fb47f2944 100644 --- a/LibGit2Sharp/Core/GitIndexTime.cs +++ b/LibGit2Sharp/Core/GitIndexTime.cs @@ -8,4 +8,4 @@ internal class GitIndexTime public long seconds; public uint nanoseconds; } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitObjectTypeMap.cs b/LibGit2Sharp/Core/GitObjectTypeMap.cs index a0fd96edf..df33787e3 100644 --- a/LibGit2Sharp/Core/GitObjectTypeMap.cs +++ b/LibGit2Sharp/Core/GitObjectTypeMap.cs @@ -10,4 +10,4 @@ internal class GitObjectTypeMap : Dictionary get { return !ContainsKey(type) ? GitObjectType.Any : base[type]; } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitOid.cs b/LibGit2Sharp/Core/GitOid.cs index ab25b5821..6b33d5200 100644 --- a/LibGit2Sharp/Core/GitOid.cs +++ b/LibGit2Sharp/Core/GitOid.cs @@ -13,4 +13,4 @@ internal struct GitOid [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] public byte[] Id; } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitReferenceType.cs b/LibGit2Sharp/Core/GitReferenceType.cs index e071e7430..04eaaa219 100644 --- a/LibGit2Sharp/Core/GitReferenceType.cs +++ b/LibGit2Sharp/Core/GitReferenceType.cs @@ -12,4 +12,4 @@ internal enum GitReferenceType Peel = 8, ListAll = Oid | Symbolic | Packed } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitRepositoryPathId.cs b/LibGit2Sharp/Core/GitRepositoryPathId.cs index 96ab86d52..3fb3d618f 100644 --- a/LibGit2Sharp/Core/GitRepositoryPathId.cs +++ b/LibGit2Sharp/Core/GitRepositoryPathId.cs @@ -7,4 +7,4 @@ internal enum GitRepositoryPathId GIT_REPO_PATH_ODB, GIT_REPO_PATH_WORKDIR } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitSignature.cs b/LibGit2Sharp/Core/GitSignature.cs index 75f854567..b1ce4b66e 100644 --- a/LibGit2Sharp/Core/GitSignature.cs +++ b/LibGit2Sharp/Core/GitSignature.cs @@ -9,4 +9,4 @@ internal class GitSignature public string Email; public GitTime When; } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/GitTime.cs b/LibGit2Sharp/Core/GitTime.cs index 013e288bb..304500d0c 100644 --- a/LibGit2Sharp/Core/GitTime.cs +++ b/LibGit2Sharp/Core/GitTime.cs @@ -8,4 +8,4 @@ internal class GitTime public long Time; public int Offset; } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/IndexSafeHandle.cs b/LibGit2Sharp/Core/IndexSafeHandle.cs index a8daa12a9..34ea79301 100644 --- a/LibGit2Sharp/Core/IndexSafeHandle.cs +++ b/LibGit2Sharp/Core/IndexSafeHandle.cs @@ -8,4 +8,4 @@ protected override bool ReleaseHandle() return true; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/IntPtrExtensions.cs b/LibGit2Sharp/Core/IntPtrExtensions.cs index b6378b071..d827511e7 100644 --- a/LibGit2Sharp/Core/IntPtrExtensions.cs +++ b/LibGit2Sharp/Core/IntPtrExtensions.cs @@ -10,4 +10,4 @@ public static string MarshallAsString(this IntPtr intPtr) return Marshal.PtrToStringAnsi(intPtr); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/LambdaEqualityHelper.cs b/LibGit2Sharp/Core/LambdaEqualityHelper.cs index 8f6ea793c..e90942ea8 100644 --- a/LibGit2Sharp/Core/LambdaEqualityHelper.cs +++ b/LibGit2Sharp/Core/LambdaEqualityHelper.cs @@ -30,7 +30,7 @@ public bool Equals(T instance, T other) foreach (Func accessor in equalityContributorAccessors) { - if (!object.Equals(accessor(instance), accessor(other))) + if (!Equals(accessor(instance), accessor(other))) { return false; } @@ -47,11 +47,11 @@ public int GetHashCode(T instance) { foreach (Func accessor in equalityContributorAccessors) { - hashCode = (hashCode * 397) ^ accessor(instance).GetHashCode(); + hashCode = (hashCode*397) ^ accessor(instance).GetHashCode(); } } return hashCode; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/Lazy.cs b/LibGit2Sharp/Core/Lazy.cs index 77ceff8d6..f6bbe0cb3 100644 --- a/LibGit2Sharp/Core/Lazy.cs +++ b/LibGit2Sharp/Core/Lazy.cs @@ -3,9 +3,9 @@ namespace LibGit2Sharp.Core { /// - /// Provides support for lazy initialization. + /// Provides support for lazy initialization. /// - /// Specifies the type of object that is being lazily initialized. + /// Specifies the type of object that is being lazily initialized. public class Lazy { private readonly Func evaluator; @@ -14,9 +14,9 @@ public class Lazy private readonly object padLock = new object(); /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// + /// public Lazy(Func evaluator) { Ensure.ArgumentNotNull(evaluator, "evaluator"); @@ -25,9 +25,12 @@ public Lazy(Func evaluator) } /// - /// Gets the lazily initialized value of the current instance. + /// Gets the lazily initialized value of the current instance. /// - public TType Value { get { return Evaluate(); } } + public TType Value + { + get { return Evaluate(); } + } private TType Evaluate() { @@ -46,4 +49,4 @@ private TType Evaluate() return value; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs b/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs index d4663dfea..f885ad3e9 100644 --- a/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs +++ b/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs @@ -7,7 +7,7 @@ internal static unsafe class Libgit2UnsafeHelper public static IList ListAllReferenceNames(RepositorySafeHandle repo, GitReferenceType types) { UnSafeNativeMethods.git_strarray strArray; - var res = UnSafeNativeMethods.git_reference_listall(out strArray, repo, types); + int res = UnSafeNativeMethods.git_reference_listall(out strArray, repo, types); Ensure.Success(res); return BuildListOf(strArray); @@ -16,7 +16,7 @@ public static IList ListAllReferenceNames(RepositorySafeHandle repo, Git public static IList ListAllTagNames(RepositorySafeHandle repo) { UnSafeNativeMethods.git_strarray strArray; - var res = UnSafeNativeMethods.git_tag_list(out strArray, repo); + int res = UnSafeNativeMethods.git_tag_list(out strArray, repo); Ensure.Success(res); return BuildListOf(strArray); @@ -45,4 +45,4 @@ private static IList BuildListOf(UnSafeNativeMethods.git_strarray strArr return list; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 7e6aa227e..4f1c7dfe4 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -1,6 +1,5 @@ using System; using System.Runtime.InteropServices; -using System.Text; namespace LibGit2Sharp.Core { @@ -22,14 +21,14 @@ internal static class NativeMethods [DllImport(libgit2)] public static extern int git_commit_create( - out GitOid oid, - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string updateRef, - GitSignature author, + out GitOid oid, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string updateRef, + GitSignature author, GitSignature committer, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string message, - IntPtr tree, - int parentCount, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string message, + IntPtr tree, + int parentCount, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 7)] [In] IntPtr[] parents); [DllImport(libgit2)] @@ -52,8 +51,8 @@ public static extern int git_commit_create( [DllImport(libgit2)] public static extern int git_index_add( - IndexSafeHandle index, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path, + IndexSafeHandle index, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string path, int stage = 0); [DllImport(libgit2)] @@ -61,8 +60,8 @@ public static extern int git_index_add( [DllImport(libgit2)] public static extern int git_index_find( - IndexSafeHandle index, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path); + IndexSafeHandle index, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string path); [DllImport(libgit2)] public static extern void git_index_free(IntPtr index); @@ -106,18 +105,18 @@ public static extern int git_index_find( [DllImport(libgit2)] public static extern int git_reference_create_oid( - out IntPtr reference, - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, - ref GitOid oid, + out IntPtr reference, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + ref GitOid oid, bool force); [DllImport(libgit2)] public static extern int git_reference_create_symbolic( - out IntPtr reference, - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string target, + out IntPtr reference, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string target, bool force); [DllImport(libgit2)] @@ -125,9 +124,9 @@ public static extern int git_reference_create_symbolic( [DllImport(libgit2)] public static extern int git_reference_lookup( - out IntPtr reference, - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name); + out IntPtr reference, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name); [DllImport(libgit2)] public static extern IntPtr git_reference_name(IntPtr reference); @@ -137,8 +136,8 @@ public static extern int git_reference_lookup( [DllImport(libgit2)] public static extern int git_reference_rename( - IntPtr reference, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string newName, + IntPtr reference, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string newName, bool force); [DllImport(libgit2)] @@ -149,8 +148,8 @@ public static extern int git_reference_rename( [DllImport(libgit2)] public static extern int git_reference_set_target( - IntPtr reference, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string target); + IntPtr reference, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string target); [DllImport(libgit2)] public static extern IntPtr git_reference_target(IntPtr reference); @@ -163,11 +162,11 @@ public static extern int git_reference_set_target( [DllImport(libgit2)] public static extern int git_repository_discover( - byte[] repository_path, // NB: This is more properly a StringBuilder, but it's UTF8 - int size, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string start_path, + byte[] repository_path, // NB: This is more properly a StringBuilder, but it's UTF8 + int size, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string start_path, [MarshalAs(UnmanagedType.Bool)] bool across_fs, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string ceiling_dirs); + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string ceiling_dirs); [DllImport(libgit2)] public static extern void git_repository_free(IntPtr repository); @@ -180,8 +179,8 @@ public static extern int git_repository_discover( [DllImport(libgit2)] public static extern int git_repository_init( - out RepositorySafeHandle repository, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path, + out RepositorySafeHandle repository, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string path, [MarshalAs(UnmanagedType.Bool)] bool isBare); [DllImport(libgit2)] @@ -193,8 +192,8 @@ public static extern int git_repository_init( [DllImport(libgit2)] public static extern int git_repository_open( - out RepositorySafeHandle repository, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string path); + out RepositorySafeHandle repository, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string path); [DllImport(libgit2)] public static extern IntPtr git_repository_path(RepositorySafeHandle repository, GitRepositoryPathId pathIdentifier); @@ -225,33 +224,33 @@ public static extern int git_repository_open( [DllImport(libgit2)] public static extern IntPtr git_signature_new( - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string email, - long time, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string email, + long time, int offset); [DllImport(libgit2)] public static extern int git_tag_create( - out GitOid oid, - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, - IntPtr target, - GitSignature signature, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string message, + out GitOid oid, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + IntPtr target, + GitSignature signature, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string message, bool force); [DllImport(libgit2)] public static extern int git_tag_create_lightweight( - out GitOid oid, - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string name, - IntPtr target, + out GitOid oid, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + IntPtr target, bool force); [DllImport(libgit2)] public static extern int git_tag_delete( - RepositorySafeHandle repo, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string tagName); + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string tagName); [DllImport(libgit2)] public static extern IntPtr git_tag_message(IntPtr tag); @@ -279,8 +278,8 @@ public static extern int git_tag_delete( [DllImport(libgit2)] public static extern IntPtr git_tree_entry_byname( - IntPtr tree, - [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(UTF8Marshaler))] string filename); + IntPtr tree, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string filename); [DllImport(libgit2)] public static extern IntPtr git_tree_entry_id(IntPtr entry); @@ -294,4 +293,4 @@ public static extern IntPtr git_tree_entry_byname( [DllImport(libgit2)] public static extern uint git_tree_entrycount(IntPtr tree); } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/ObjectSafeWrapper.cs b/LibGit2Sharp/Core/ObjectSafeWrapper.cs index c254612ea..d0c674fea 100755 --- a/LibGit2Sharp/Core/ObjectSafeWrapper.cs +++ b/LibGit2Sharp/Core/ObjectSafeWrapper.cs @@ -13,8 +13,8 @@ public ObjectSafeWrapper(ObjectId id, Repository repo) return; } - var oid = id.Oid; - var res = NativeMethods.git_object_lookup(out objectPtr, repo.Handle, ref oid, GitObjectType.Any); + GitOid oid = id.Oid; + int res = NativeMethods.git_object_lookup(out objectPtr, repo.Handle, ref oid, GitObjectType.Any); Ensure.Success(res); } @@ -45,4 +45,4 @@ private void Dispose(bool disposing) Dispose(false); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/PosixPathHelper.cs b/LibGit2Sharp/Core/PosixPathHelper.cs index 88cb2ce1e..a21dd9d6f 100644 --- a/LibGit2Sharp/Core/PosixPathHelper.cs +++ b/LibGit2Sharp/Core/PosixPathHelper.cs @@ -33,7 +33,7 @@ public static string ToNative(string posixPath) return null; } - return posixPath.Replace(posixDirectorySeparatorChar, Path.DirectorySeparatorChar); ; + return posixPath.Replace(posixDirectorySeparatorChar, Path.DirectorySeparatorChar); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/RepositorySafeHandle.cs b/LibGit2Sharp/Core/RepositorySafeHandle.cs index be4709b98..bb39b375a 100644 --- a/LibGit2Sharp/Core/RepositorySafeHandle.cs +++ b/LibGit2Sharp/Core/RepositorySafeHandle.cs @@ -8,4 +8,4 @@ protected override bool ReleaseHandle() return true; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/RevWalkerSafeHandle.cs b/LibGit2Sharp/Core/RevWalkerSafeHandle.cs index d4adc77ce..acf15c5dc 100644 --- a/LibGit2Sharp/Core/RevWalkerSafeHandle.cs +++ b/LibGit2Sharp/Core/RevWalkerSafeHandle.cs @@ -8,4 +8,4 @@ protected override bool ReleaseHandle() return true; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/SafeHandleBase.cs b/LibGit2Sharp/Core/SafeHandleBase.cs index 7ba4bc4fb..adc6ac66e 100644 --- a/LibGit2Sharp/Core/SafeHandleBase.cs +++ b/LibGit2Sharp/Core/SafeHandleBase.cs @@ -17,4 +17,4 @@ public override bool IsInvalid protected abstract override bool ReleaseHandle(); } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/UnSafeNativeMethods.cs b/LibGit2Sharp/Core/UnSafeNativeMethods.cs index dbb27c488..0448b5c54 100644 --- a/LibGit2Sharp/Core/UnSafeNativeMethods.cs +++ b/LibGit2Sharp/Core/UnSafeNativeMethods.cs @@ -26,4 +26,4 @@ internal struct git_strarray #endregion } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Core/UTF8Marshaler.cs b/LibGit2Sharp/Core/Utf8Marshaler.cs similarity index 69% rename from LibGit2Sharp/Core/UTF8Marshaler.cs rename to LibGit2Sharp/Core/Utf8Marshaler.cs index cdca8e987..5f0ea487e 100644 --- a/LibGit2Sharp/Core/UTF8Marshaler.cs +++ b/LibGit2Sharp/Core/Utf8Marshaler.cs @@ -4,17 +4,21 @@ namespace LibGit2Sharp.Core { - internal class UTF8Marshaler : ICustomMarshaler + internal class Utf8Marshaler : ICustomMarshaler { - static UTF8Marshaler static_instance; + private static Utf8Marshaler staticInstance; public unsafe IntPtr MarshalManagedToNative(object managedObj) { if (managedObj == null) + { return IntPtr.Zero; + } + if (!(managedObj is string)) - throw new MarshalDirectiveException( - "UTF8Marshaler must be used on a string."); + { + throw new MarshalDirectiveException("UTF8Marshaler must be used on a string."); + } // not null terminated byte[] strbuf = Encoding.UTF8.GetBytes((string)managedObj); @@ -22,7 +26,7 @@ public unsafe IntPtr MarshalManagedToNative(object managedObj) Marshal.Copy(strbuf, 0, buffer, strbuf.Length); // write the terminating null - byte* pBuf = (byte*) buffer; + var pBuf = (byte*)buffer; pBuf[strbuf.Length] = 0; return buffer; @@ -30,19 +34,20 @@ public unsafe IntPtr MarshalManagedToNative(object managedObj) public unsafe object MarshalNativeToManaged(IntPtr pNativeData) { - byte* walk = (byte*)pNativeData; + var walk = (byte*)pNativeData; // find the end of the string while (*walk != 0) { walk++; } - int length = (int)(walk - (byte*)pNativeData); + var length = (int)(walk - (byte*)pNativeData); // should not be null terminated - byte[] strbuf = new byte[length - 1]; + var strbuf = new byte[length - 1]; + // skip the trailing null - Marshal.Copy((IntPtr)pNativeData, strbuf, 0, length - 1); + Marshal.Copy(pNativeData, strbuf, 0, length - 1); string data = Encoding.UTF8.GetString(strbuf); return data; } @@ -63,11 +68,12 @@ public int GetNativeDataSize() public static ICustomMarshaler GetInstance(string cookie) { - if (static_instance == null) + if (staticInstance == null) { - return static_instance = new UTF8Marshaler(); + return staticInstance = new Utf8Marshaler(); } - return static_instance; + + return staticInstance; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/DirectReference.cs b/LibGit2Sharp/DirectReference.cs index 70160b1b2..17fb4bf8a 100644 --- a/LibGit2Sharp/DirectReference.cs +++ b/LibGit2Sharp/DirectReference.cs @@ -17,10 +17,13 @@ internal DirectReference(Lazy targetBuilder) /// /// Gets the target of this /// - public GitObject Target { get { return targetBuilder.Value; } } + public GitObject Target + { + get { return targetBuilder.Value; } + } /// - /// As a is already peeled, invoking this will return the same . + /// As a is already peeled, invoking this will return the same . /// /// This instance. public override DirectReference ResolveToDirectReference() @@ -28,4 +31,4 @@ public override DirectReference ResolveToDirectReference() return this; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Filter.cs b/LibGit2Sharp/Filter.cs index 6d56fd474..77ef5d902 100644 --- a/LibGit2Sharp/Filter.cs +++ b/LibGit2Sharp/Filter.cs @@ -1,12 +1,12 @@ namespace LibGit2Sharp { /// - /// Criterias used to filter out and order the commits of the repository when querying its history. + /// Criterias used to filter out and order the commits of the repository when querying its history. /// public class Filter { /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// public Filter() { @@ -15,33 +15,32 @@ public Filter() } /// - /// The ordering stragtegy to use. - /// - /// By default, the commits are shown in reverse chronological order. - /// + /// The ordering stragtegy to use. + /// + /// By default, the commits are shown in reverse chronological order. + /// /// public GitSortOptions SortBy { get; set; } /// - /// A pointer to a commit object or a list of pointers to consider as starting points. - /// - /// Can be either a containing the sha or reference canonical name to use, - /// a , a , a , a - /// or a or even a mixed collection of all of the above. - /// By default, the will be used as boundary. - /// + /// A pointer to a commit object or a list of pointers to consider as starting points. + /// + /// Can be either a containing the sha or reference canonical name to use, + /// a , a , a , a + /// or a or even a mixed collection of all of the above. + /// By default, the will be used as boundary. + /// /// public object Since { get; set; } - /// - /// A pointer to a commit object or a list of pointers which will be excluded (along with ancestors) from the enumeration. - /// - /// Can be either a containing the sha or reference canonical name to use, - /// a , a , a , a - /// or a or even a mixed collection of all of the above. - /// + /// A pointer to a commit object or a list of pointers which will be excluded (along with ancestors) from the enumeration. + /// + /// Can be either a containing the sha or reference canonical name to use, + /// a , a , a , a + /// or a or even a mixed collection of all of the above. + /// /// public object Until { get; set; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/GitObject.cs b/LibGit2Sharp/GitObject.cs index a0d9dd0d1..9f537cd63 100644 --- a/LibGit2Sharp/GitObject.cs +++ b/LibGit2Sharp/GitObject.cs @@ -12,20 +12,20 @@ public class GitObject : IEquatable internal static GitObjectTypeMap TypeToTypeMap = new GitObjectTypeMap { - {typeof (Commit), GitObjectType.Commit}, - {typeof (Tree), GitObjectType.Tree}, - {typeof (Blob), GitObjectType.Blob}, - {typeof (TagAnnotation), GitObjectType.Tag}, - {typeof (GitObject), GitObjectType.Any}, + { typeof(Commit), GitObjectType.Commit }, + { typeof(Tree), GitObjectType.Tree }, + { typeof(Blob), GitObjectType.Blob }, + { typeof(TagAnnotation), GitObjectType.Tag }, + { typeof(GitObject), GitObjectType.Any }, }; private static readonly LambdaEqualityHelper equalityHelper = - new LambdaEqualityHelper(new Func[] {x => x.Id}); + new LambdaEqualityHelper(new Func[] { x => x.Id }); /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// The it should be identified by. + /// The it should be identified by. protected GitObject(ObjectId id) { Id = id; @@ -48,7 +48,7 @@ internal static GitObject CreateFromPtr(IntPtr obj, ObjectId id, Repository repo { try { - var type = NativeMethods.git_object_type(obj); + GitObjectType type = NativeMethods.git_object_type(obj); switch (type) { case GitObjectType.Commit: @@ -71,32 +71,32 @@ internal static GitObject CreateFromPtr(IntPtr obj, ObjectId id, Repository repo internal static ObjectId ObjectIdOf(IntPtr obj) { - var ptr = NativeMethods.git_object_id(obj); + IntPtr ptr = NativeMethods.git_object_id(obj); return new ObjectId((GitOid)Marshal.PtrToStructure(ptr, typeof(GitOid))); } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public override bool Equals(object obj) { return Equals(obj as GitObject); } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public bool Equals(GitObject other) { return equalityHelper.Equals(this, other); } /// - /// Returns the hash code for this instance. + /// Returns the hash code for this instance. /// /// A 32-bit signed integer hash code. public override int GetHashCode() @@ -105,10 +105,10 @@ public override int GetHashCode() } /// - /// Tests if two are equal. + /// Tests if two are equal. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are equal; false otherwise. public static bool operator ==(GitObject left, GitObject right) { @@ -116,14 +116,14 @@ public override int GetHashCode() } /// - /// Tests if two are different. + /// Tests if two are different. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are different; false otherwise. public static bool operator !=(GitObject left, GitObject right) { return !Equals(left, right); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/GitObjectType.cs b/LibGit2Sharp/GitObjectType.cs index 7654b4a7f..36f658b70 100644 --- a/LibGit2Sharp/GitObjectType.cs +++ b/LibGit2Sharp/GitObjectType.cs @@ -1,58 +1,58 @@ namespace LibGit2Sharp { /// - /// Underlying type of a + /// Underlying type of a /// public enum GitObjectType { /// - /// Object can be of any type. + /// Object can be of any type. /// Any = -2, /// - /// Object is invalid. + /// Object is invalid. /// Bad = -1, /// - /// Reserved for future use. + /// Reserved for future use. /// Ext1 = 0, /// - /// A commit object. + /// A commit object. /// Commit = 1, /// - /// A tree (directory listing) object. + /// A tree (directory listing) object. /// Tree = 2, /// - /// A file revision object. + /// A file revision object. /// Blob = 3, /// - /// An annotated tag object. + /// An annotated tag object. /// Tag = 4, /// - /// Reserved for future use. + /// Reserved for future use. /// Ext2 = 5, /// - /// A delta, base is given by an offset. + /// A delta, base is given by an offset. /// OfsDelta = 6, /// - /// A delta, base is given by object id. + /// A delta, base is given by object id. /// RefDelta = 7 } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/GitSortOptions.cs b/LibGit2Sharp/GitSortOptions.cs index 0330db99c..86d40dfbc 100644 --- a/LibGit2Sharp/GitSortOptions.cs +++ b/LibGit2Sharp/GitSortOptions.cs @@ -6,31 +6,31 @@ namespace LibGit2Sharp public enum GitSortOptions { /// - /// Sort the repository contents in no particular ordering; - /// this sorting is arbitrary, implementation-specific - /// and subject to change at any time. + /// Sort the repository contents in no particular ordering; + /// this sorting is arbitrary, implementation-specific + /// and subject to change at any time. /// None = 0, /// - /// Sort the repository contents in topological order - /// (parents before children); this sorting mode - /// can be combined with time sorting. + /// Sort the repository contents in topological order + /// (parents before children); this sorting mode + /// can be combined with time sorting. /// Topological = (1 << 0), /// - /// Sort the repository contents by commit time; - /// this sorting mode can be combined with - /// topological sorting. + /// Sort the repository contents by commit time; + /// this sorting mode can be combined with + /// topological sorting. /// Time = (1 << 1), /// - /// Iterate through the repository contents in reverse - /// order; this sorting mode can be combined with - /// any of the above. + /// Iterate through the repository contents in reverse + /// order; this sorting mode can be combined with + /// any of the above. /// Reverse = (1 << 2) } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/ICommitCollection.cs b/LibGit2Sharp/ICommitCollection.cs index 2d8633a07..155ae3b5a 100644 --- a/LibGit2Sharp/ICommitCollection.cs +++ b/LibGit2Sharp/ICommitCollection.cs @@ -5,8 +5,8 @@ namespace LibGit2Sharp public interface ICommitCollection : IEnumerable { /// - /// Gets the current sorting strategy applied when enumerating the collection. + /// Gets the current sorting strategy applied when enumerating the collection. /// GitSortOptions SortedBy { get; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/IQueryableCommitCollection.cs b/LibGit2Sharp/IQueryableCommitCollection.cs index 0b1a7f4f8..ba4113226 100644 --- a/LibGit2Sharp/IQueryableCommitCollection.cs +++ b/LibGit2Sharp/IQueryableCommitCollection.cs @@ -3,19 +3,19 @@ public interface IQueryableCommitCollection : ICommitCollection //TODO: Find a name that's more explicit than IQueryableCommitCollection { /// - /// Returns the list of commits of the repository matching the specified . + /// Returns the list of commits of the repository matching the specified . /// - /// The options used to control which commits will be returned. + /// The options used to control which commits will be returned. /// A collection of commits, ready to be enumerated. ICommitCollection QueryBy(Filter filter); /// - /// Stores the content of the content as a new into the repository. + /// Stores the content of the content as a new into the repository. /// - /// The of who made the change. - /// The of who added the change to the repository. - /// The description of why a change was made to the repository. - /// The generated . + /// The of who made the change. + /// The of who added the change to the repository. + /// The description of why a change was made to the repository. + /// The generated . Commit Create(Signature author, Signature committer, string message); } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Index.cs b/LibGit2Sharp/Index.cs index 87cece647..faefc20ed 100644 --- a/LibGit2Sharp/Index.cs +++ b/LibGit2Sharp/Index.cs @@ -15,7 +15,7 @@ public class Index : IEnumerable, IDisposable internal Index(Repository repo) { this.repo = repo; - var res = NativeMethods.git_repository_index(out handle, repo.Handle); + int res = NativeMethods.git_repository_index(out handle, repo.Handle); Ensure.Success(res); } @@ -52,7 +52,7 @@ private IndexEntry this[uint index] { get { - var entryPtr = NativeMethods.git_index_get(handle, index); + IntPtr entryPtr = NativeMethods.git_index_get(handle, index); return IndexEntry.CreateFromPtr(entryPtr); } } @@ -75,7 +75,7 @@ public IEnumerable Untracked #region IDisposable Members /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// public void Dispose() { @@ -84,7 +84,7 @@ public void Dispose() } /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// protected virtual void Dispose(bool disposing) { @@ -99,9 +99,9 @@ protected virtual void Dispose(bool disposing) #region IEnumerable Members /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { for (uint i = 0; i < Count; i++) @@ -111,9 +111,9 @@ public IEnumerator GetEnumerator() } /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); @@ -170,13 +170,13 @@ public void Move(string sourcePath, string destinationPath) private void AddToIndex(string path) { - var res = NativeMethods.git_index_add(handle, BuildRelativePathFrom(path)); + int res = NativeMethods.git_index_add(handle, BuildRelativePathFrom(path)); Ensure.Success(res); } private void RemoveFromIndex(string relativePath) { - var res = NativeMethods.git_index_find(handle, relativePath); + int res = NativeMethods.git_index_find(handle, relativePath); Ensure.Success(res, true); res = NativeMethods.git_index_remove(handle, res); @@ -185,13 +185,13 @@ private void RemoveFromIndex(string relativePath) private void RestorePotentialPreviousVersionOf(string relativePath) { - var currentHeadBlob = repo.Head.Tip.Tree[relativePath]; + TreeEntry currentHeadBlob = repo.Head.Tip.Tree[relativePath]; if ((currentHeadBlob == null) || currentHeadBlob.Type != GitObjectType.Blob) { return; } - File.WriteAllBytes(Path.Combine(repo.Info.WorkingDirectory, relativePath), ((Blob) currentHeadBlob.Target).Content); + File.WriteAllBytes(Path.Combine(repo.Info.WorkingDirectory, relativePath), ((Blob)currentHeadBlob.Target).Content); AddToIndex(relativePath); } @@ -201,14 +201,14 @@ private void UpdatePhysicalIndex() Ensure.Success(res); } - private string BuildRelativePathFrom(string path) //TODO: To be removed when libgit2 natively implements this + private string BuildRelativePathFrom(string path) //TODO: To be removed when libgit2 natively implements this { if (!Path.IsPathRooted(path)) { return path; } - var normalizedPath = Path.GetFullPath(path); + string normalizedPath = Path.GetFullPath(path); if (!normalizedPath.StartsWith(repo.Info.WorkingDirectory, StringComparison.Ordinal)) { @@ -218,4 +218,4 @@ private string BuildRelativePathFrom(string path) //TODO: To be removed when l return normalizedPath.Substring(repo.Info.WorkingDirectory.Length); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/IndexEntry.cs b/LibGit2Sharp/IndexEntry.cs index c70c5bef2..ac3688551 100644 --- a/LibGit2Sharp/IndexEntry.cs +++ b/LibGit2Sharp/IndexEntry.cs @@ -13,7 +13,7 @@ public class IndexEntry internal static IndexEntry CreateFromPtr(IntPtr ptr) { - var entry = (GitIndexEntry) Marshal.PtrToStructure(ptr, typeof (GitIndexEntry)); + var entry = (GitIndexEntry)Marshal.PtrToStructure(ptr, typeof(GitIndexEntry)); return new IndexEntry { Path = entry.Path, @@ -21,4 +21,4 @@ internal static IndexEntry CreateFromPtr(IntPtr ptr) }; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/IndexEntryState.cs b/LibGit2Sharp/IndexEntryState.cs index e30a25af4..4f44b1d2d 100644 --- a/LibGit2Sharp/IndexEntryState.cs +++ b/LibGit2Sharp/IndexEntryState.cs @@ -10,4 +10,4 @@ public enum IndexEntryState RemovedUnstaged, RemovedStaged, } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/LibGit2Sharp.csproj b/LibGit2Sharp/LibGit2Sharp.csproj index 2fd57bd45..775c08ac9 100644 --- a/LibGit2Sharp/LibGit2Sharp.csproj +++ b/LibGit2Sharp/LibGit2Sharp.csproj @@ -71,7 +71,7 @@ - + diff --git a/LibGit2Sharp/ObjectId.cs b/LibGit2Sharp/ObjectId.cs index 1e8679325..028d203d6 100644 --- a/LibGit2Sharp/ObjectId.cs +++ b/LibGit2Sharp/ObjectId.cs @@ -5,7 +5,7 @@ namespace LibGit2Sharp { /// - /// Uniquely identifies a . + /// Uniquely identifies a . /// public class ObjectId : IEquatable { @@ -13,7 +13,7 @@ public class ObjectId : IEquatable private const int rawSize = 20; private readonly string sha; - protected const int HexSize = rawSize * 2; + protected const int HexSize = rawSize*2; protected const int MinHexSize = 4; private const string hexDigits = "0123456789abcdef"; @@ -24,9 +24,9 @@ public class ObjectId : IEquatable new LambdaEqualityHelper(new Func[] { x => x.Sha }); /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// The oid. + /// The oid. internal ObjectId(GitOid oid) { this.oid = oid; @@ -34,9 +34,9 @@ internal ObjectId(GitOid oid) } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// The byte array. + /// The byte array. public ObjectId(byte[] rawId) : this(new GitOid { Id = rawId }) { @@ -45,9 +45,9 @@ public ObjectId(byte[] rawId) } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// The sha. + /// The sha. public ObjectId(string sha) { GitOid? parsedOid = BuildOidFrom(sha, true, false); @@ -67,7 +67,7 @@ internal GitOid Oid } /// - /// Gets the raw id. + /// Gets the raw id. /// public byte[] RawId { @@ -75,16 +75,19 @@ public byte[] RawId } /// - /// Gets the sha. + /// Gets the sha. /// - public virtual string Sha { get { return sha; } } + public virtual string Sha + { + get { return sha; } + } /// - /// Converts the specified string representation of a Sha-1 to its equivalent and returns a value that indicates whether the conversion succeeded. + /// Converts the specified string representation of a Sha-1 to its equivalent and returns a value that indicates whether the conversion succeeded. /// - /// A string containing a Sha-1 to convert. - /// When this method returns, contains the value equivalent to the Sha-1 contained in , if the conversion succeeded, or null if the conversion failed. - /// true if the parameter was converted successfully; otherwise, false. + /// A string containing a Sha-1 to convert. + /// When this method returns, contains the value equivalent to the Sha-1 contained in , if the conversion succeeded, or null if the conversion failed. + /// true if the parameter was converted successfully; otherwise, false. public static bool TryParse(string sha, out ObjectId result) { result = BuildFrom(sha, false, true); @@ -117,27 +120,27 @@ private static ObjectId BuildFrom(string sha, bool shouldThrowIfInvalid, bool al } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public override bool Equals(object obj) { return Equals(obj as ObjectId); } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public bool Equals(ObjectId other) { return equalityHelper.Equals(this, other); } /// - /// Returns the hash code for this instance. + /// Returns the hash code for this instance. /// /// A 32-bit signed integer hash code. public override int GetHashCode() @@ -146,19 +149,19 @@ public override int GetHashCode() } /// - /// Returns the , a representation of the current . + /// Returns the , a representation of the current . /// - /// The that represents the current . + /// The that represents the current . public override string ToString() { return Sha; } /// - /// Returns the , a representation of the current . + /// Returns the , a representation of the current . /// - /// The number of chars the should be truncated to. - /// The that represents the current . + /// The number of chars the should be truncated to. + /// The that represents the current . public string ToString(int prefixLength) { int normalizedLength = NormalizeLength(prefixLength); @@ -181,10 +184,10 @@ private static int NormalizeLength(int prefixLength) } /// - /// Tests if two are equal. + /// Tests if two are equal. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are equal; false otherwise. public static bool operator ==(ObjectId left, ObjectId right) { @@ -192,10 +195,10 @@ private static int NormalizeLength(int prefixLength) } /// - /// Tests if two are different. + /// Tests if two are different. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are different; false otherwise. public static bool operator !=(ObjectId left, ObjectId right) { @@ -260,7 +263,7 @@ private static GitOid ToOid(string sha) bytes[i >> 1] = (byte)(c1 + c2); } - var oid = new GitOid{Id = bytes}; + var oid = new GitOid { Id = bytes }; return oid; } @@ -285,8 +288,8 @@ private static bool LooksValid(string objectId, bool throwIfInvalid, bool allowS string additionalErrorInformation = !allowShortIdentifier ? - string.Format("Its length should be {0}", HexSize) : - string.Format("Its length should be comprised between {0} and {1}", MinHexSize, HexSize); + string.Format("Its length should be {0}", HexSize) : + string.Format("Its length should be comprised between {0} and {1}", MinHexSize, HexSize); throw new ArgumentException( string.Format("'{0}' is not a valid object identifier. {1}.", objectId, additionalErrorInformation), diff --git a/LibGit2Sharp/Properties/AssemblyInfo.cs b/LibGit2Sharp/Properties/AssemblyInfo.cs index 4634b8bcf..2ed688a84 100644 --- a/LibGit2Sharp/Properties/AssemblyInfo.cs +++ b/LibGit2Sharp/Properties/AssemblyInfo.cs @@ -43,4 +43,4 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.4.0")] -[assembly: AssemblyFileVersion("0.4.0")] \ No newline at end of file +[assembly: AssemblyFileVersion("0.4.0")] diff --git a/LibGit2Sharp/Reference.cs b/LibGit2Sharp/Reference.cs index 8d67ed824..486459ff6 100644 --- a/LibGit2Sharp/Reference.cs +++ b/LibGit2Sharp/Reference.cs @@ -52,7 +52,7 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class break; case GitReferenceType.Oid: - var oidPtr = NativeMethods.git_reference_oid(ptr); + IntPtr oidPtr = NativeMethods.git_reference_oid(ptr); var oid = (GitOid)Marshal.PtrToStructure(oidPtr, typeof(GitOid)); var targetId = new ObjectId(oid); targetIdentifier = targetId.Sha; @@ -91,40 +91,41 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class /// /// Recursively peels the target of the reference until a direct reference is encountered. /// - /// The this points to. + /// The this points to. public abstract DirectReference ResolveToDirectReference(); /// - /// Gets the target declared by the reference. - /// - /// If this reference is a , returns the canonical name of the target. - /// Otherwise, if this reference is a , returns the sha of the target. - /// + /// Gets the target declared by the reference. + /// + /// If this reference is a , returns the canonical name of the target. + /// Otherwise, if this reference is a , returns the sha of the target. + /// /// - public string TargetIdentifier { get; private set; } //TODO: Maybe find a better name for this property. + // TODO: Maybe find a better name for this property. + public string TargetIdentifier { get; private set; } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public override bool Equals(object obj) { return Equals(obj as Reference); } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public bool Equals(Reference other) { return equalityHelper.Equals(this, other); } /// - /// Returns the hash code for this instance. + /// Returns the hash code for this instance. /// /// A 32-bit signed integer hash code. public override int GetHashCode() @@ -133,10 +134,10 @@ public override int GetHashCode() } /// - /// Tests if two are equal. + /// Tests if two are equal. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are equal; false otherwise. public static bool operator ==(Reference left, Reference right) { @@ -144,10 +145,10 @@ public override int GetHashCode() } /// - /// Tests if two are different. + /// Tests if two are different. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are different; false otherwise. public static bool operator !=(Reference left, Reference right) { @@ -155,12 +156,12 @@ public override int GetHashCode() } /// - /// Returns the , a representation of the current . + /// Returns the , a representation of the current . /// - /// The that represents the current . + /// The that represents the current . public override string ToString() { return CanonicalName; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/ReferenceCollection.cs b/LibGit2Sharp/ReferenceCollection.cs index 87b7988dd..95ac66fc3 100644 --- a/LibGit2Sharp/ReferenceCollection.cs +++ b/LibGit2Sharp/ReferenceCollection.cs @@ -36,9 +36,9 @@ public Reference this[string name] #region IEnumerable Members /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { return Libgit2UnsafeHelper @@ -48,9 +48,9 @@ public IEnumerator GetEnumerator() } /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); @@ -63,7 +63,7 @@ IEnumerator IEnumerable.GetEnumerator() /// /// The name of the reference to create. /// The target which can be either a sha or the canonical name of another reference. - /// True to allow silent overwriting a potentially existing reference, false otherwise. + /// True to allow silent overwriting a potentially existing reference, false otherwise. /// A new . public Reference Create(string name, string target, bool allowOverwrite = false) { @@ -110,11 +110,11 @@ private ObjectId Unabbreviate(ObjectId targetId) return targetId; } - var obj = repo.Lookup(targetId); + GitObject obj = repo.Lookup(targetId); if (obj == null) { - Ensure.Success((int) GitErrorCode.GIT_ENOTFOUND); + Ensure.Success((int)GitErrorCode.GIT_ENOTFOUND); } return obj.Id; @@ -123,7 +123,7 @@ private ObjectId Unabbreviate(ObjectId targetId) /// /// Delete a reference with the specified name /// - /// The name of the reference to delete. + /// The name of the reference to delete. public void Delete(string name) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); @@ -137,9 +137,9 @@ public void Delete(string name) /// /// Rename an existing reference with a new name /// - /// The canonical name of the reference to rename. - /// The new canonical name. - /// True to allow silent overwriting a potentially existing reference, false otherwise. + /// The canonical name of the reference to rename. + /// The new canonical name. + /// True to allow silent overwriting a potentially existing reference, false otherwise. /// public Reference Move(string currentName, string newName, bool allowOverwrite = false) { @@ -178,16 +178,22 @@ public Reference UpdateTarget(string name, string target) ObjectId id; bool isObjectIdentifier = ObjectId.TryParse(target, out id); - var type = NativeMethods.git_reference_type(reference); + GitReferenceType type = NativeMethods.git_reference_type(reference); switch (type) { case GitReferenceType.Oid: - if (!isObjectIdentifier) throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The reference specified by {0} is an Oid reference, you must provide a sha as the target.", name), "target"); - var oid = id.Oid; + if (!isObjectIdentifier) + { + throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The reference specified by {0} is an Oid reference, you must provide a sha as the target.", name), "target"); + } + GitOid oid = id.Oid; res = NativeMethods.git_reference_set_oid(reference, ref oid); break; case GitReferenceType.Symbolic: - if (isObjectIdentifier) throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The reference specified by {0} is an Symbolic reference, you must provide a symbol as the target.", name), "target"); + if (isObjectIdentifier) + { + throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The reference specified by {0} is an Symbolic reference, you must provide a symbol as the target.", name), "target"); + } res = NativeMethods.git_reference_set_target(reference, target); break; default: @@ -202,7 +208,7 @@ public Reference UpdateTarget(string name, string target) private IntPtr RetrieveReferencePtr(string referenceName, bool shouldThrow = true) { IntPtr reference; - var res = NativeMethods.git_reference_lookup(out reference, repo.Handle, referenceName); + int res = NativeMethods.git_reference_lookup(out reference, repo.Handle, referenceName); if (!shouldThrow && res == (int)GitErrorCode.GIT_ENOTFOUND) { @@ -214,4 +220,4 @@ private IntPtr RetrieveReferencePtr(string referenceName, bool shouldThrow = tru return reference; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Repository.cs b/LibGit2Sharp/Repository.cs index 44023f7dd..f9d80be6c 100644 --- a/LibGit2Sharp/Repository.cs +++ b/LibGit2Sharp/Repository.cs @@ -21,14 +21,14 @@ public class Repository : IDisposable /// /// Initializes a new instance of the class. - /// For a standard repository, should point to the ".git" folder. For a bare repository, should directly point to the repository folder. + /// For a standard repository, should point to the ".git" folder. For a bare repository, should directly point to the repository folder. /// /// The path to the git repository to open. public Repository(string path) { Ensure.ArgumentNotNullOrEmptyString(path, "path"); - var res = NativeMethods.git_repository_open(out handle, PosixPathHelper.ToPosix(path)); + int res = NativeMethods.git_repository_open(out handle, PosixPathHelper.ToPosix(path)); Ensure.Success(res); isBare = NativeMethods.git_repository_is_bare(handle); @@ -113,12 +113,15 @@ public TagCollection Tags /// /// Provides high level information about this repository. /// - public RepositoryInformation Info { get { return info.Value; } } + public RepositoryInformation Info + { + get { return info.Value; } + } #region IDisposable Members /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// public void Dispose() { @@ -127,7 +130,7 @@ public void Dispose() } /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// protected virtual void Dispose(bool disposing) { @@ -144,26 +147,26 @@ protected virtual void Dispose(bool disposing) #endregion - /// - /// Tells if the specified sha exists in the repository. + /// + /// Tells if the specified sha exists in the repository. /// - /// Exceptions: - /// ArgumentException - /// ArgumentNullException - /// - /// The sha. - /// - public bool HasObject(string sha) //TODO: To be removed from front facing API (maybe should we create an Repository.Advanced to hold those kind of functions)? + /// Exceptions: + /// ArgumentException + /// ArgumentNullException + /// + ///The sha. + /// + public bool HasObject(string sha) //TODO: To be removed from front facing API (maybe should we create an Repository.Advanced to hold those kind of functions)? { var id = new ObjectId(sha); - var odb = NativeMethods.git_repository_database(handle); - var oid = id.Oid; + IntPtr odb = NativeMethods.git_repository_database(handle); + GitOid oid = id.Oid; return NativeMethods.git_odb_exists(odb, ref oid); } /// - /// Init a repo at the specified . + /// Init a repo at the specified . /// /// The path to the working folder when initializing a standard ".git" repository. Otherwise, when initializing a bare repository, the path to the expected location of this later. /// true to initialize a bare repository. False otherwise, to initialize a standard ".git" repository. @@ -173,7 +176,7 @@ public static string Init(string path, bool isBare = false) Ensure.ArgumentNotNullOrEmptyString(path, "path"); RepositorySafeHandle repo; - var res = NativeMethods.git_repository_init(out repo, PosixPathHelper.ToPosix(path), isBare); + int res = NativeMethods.git_repository_init(out repo, PosixPathHelper.ToPosix(path), isBare); Ensure.Success(res); string normalizedPath = NativeMethods.git_repository_path(repo, GitRepositoryPathId.GIT_REPO_PATH).MarshallAsString(); @@ -203,7 +206,7 @@ public GitObject Lookup(ObjectId id, GitObjectType type = GitObjectType.Any) { Ensure.ArgumentNotNull(id, "id"); - var oid = id.Oid; + GitOid oid = id.Oid; IntPtr obj; int res; @@ -232,10 +235,10 @@ public GitObject Lookup(ObjectId id, GitObjectType type = GitObjectType.Any) } /// - /// Try to lookup an object by its sha or a reference canonical name and . If no matching object is found, null will be returned. + /// Try to lookup an object by its sha or a reference canonical name and . If no matching object is found, null will be returned. /// /// The sha or reference canonical name to lookup. - /// The kind of being looked up + /// The kind of being looked up /// The or null if it was not found. public GitObject Lookup(string shaOrReferenceName, GitObjectType type = GitObjectType.Any) { @@ -246,7 +249,7 @@ public GitObject Lookup(string shaOrReferenceName, GitObjectType type = GitObjec return Lookup(id, type); } - var reference = Refs[shaOrReferenceName]; + Reference reference = Refs[shaOrReferenceName]; if (!IsReferencePeelable(reference)) { @@ -262,10 +265,10 @@ private static bool IsReferencePeelable(Reference reference) } /// - /// Probe for a git repository. - /// The lookup start from and walk upward parent directories if nothing has been found. + /// Probe for a git repository. + /// The lookup start from and walk upward parent directories if nothing has been found. /// - /// The base path where the lookup starts. + /// The base path where the lookup starts. /// The path to the git repository. public static string Discover(string startingPath) { @@ -275,10 +278,12 @@ public static string Discover(string startingPath) Ensure.Success(result); int nullTerminator; - for (nullTerminator = 0; nullTerminator < buffer.Length; nullTerminator++ ) + for (nullTerminator = 0; nullTerminator < buffer.Length; nullTerminator++) { if (buffer[nullTerminator] == 0) + { break; + } } if (nullTerminator == 0) @@ -289,4 +294,4 @@ public static string Discover(string startingPath) return PosixPathHelper.ToNative(Encoding.UTF8.GetString(buffer, 0, nullTerminator)); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/RepositoryExtensions.cs b/LibGit2Sharp/RepositoryExtensions.cs index 59d6d0b0e..d8134b143 100644 --- a/LibGit2Sharp/RepositoryExtensions.cs +++ b/LibGit2Sharp/RepositoryExtensions.cs @@ -1,7 +1,7 @@ namespace LibGit2Sharp { /// - /// Provides helper overloads to a . + /// Provides helper overloads to a . /// public static class RepositoryExtensions { @@ -9,7 +9,7 @@ public static class RepositoryExtensions /// Try to lookup an object by its sha or a reference name. /// /// - /// The being looked up. + /// The being looked up. /// The shaOrRef to lookup. /// public static T Lookup(this Repository repository, string shaOrRef) where T : GitObject @@ -21,7 +21,7 @@ public static T Lookup(this Repository repository, string shaOrRef) where T : /// Try to lookup an object by its . /// /// - /// The being looked up. + /// The being looked up. /// The id. /// public static T Lookup(this Repository repository, ObjectId id) where T : GitObject @@ -30,83 +30,83 @@ public static T Lookup(this Repository repository, ObjectId id) where T : Git } /// - /// Creates a lightweight tag with the specified name. This tag will point at the commit pointed at by the . + /// Creates a lightweight tag with the specified name. This tag will point at the commit pointed at by the . /// - /// The being worked with. - /// The name of the tag to create. + /// The being worked with. + /// The name of the tag to create. public static Tag ApplyTag(this Repository repository, string tagName) { return ApplyTag(repository, tagName, repository.Head.CanonicalName); } /// - /// Creates a lightweight tag with the specified name. This tag will point at the . + /// Creates a lightweight tag with the specified name. This tag will point at the . /// - /// The being worked with. - /// The name of the tag to create. - /// The canonical reference name or sha which should be pointed at by the Tag. + /// The being worked with. + /// The name of the tag to create. + /// The canonical reference name or sha which should be pointed at by the Tag. public static Tag ApplyTag(this Repository repository, string tagName, string target) { return repository.Tags.Create(tagName, target); } /// - /// Creates an annotated tag with the specified name. This tag will point at the commit pointed at by the . + /// Creates an annotated tag with the specified name. This tag will point at the commit pointed at by the . /// - /// The being worked with. - /// The name of the tag to create. - /// The identity of the creator of this tag. - /// The annotation message. + /// The being worked with. + /// The name of the tag to create. + /// The identity of the creator of this tag. + /// The annotation message. public static Tag ApplyTag(this Repository repository, string tagName, Signature tagger, string message) { return ApplyTag(repository, tagName, repository.Head.CanonicalName, tagger, message); } /// - /// Creates an annotated tag with the specified name. This tag will point at the . + /// Creates an annotated tag with the specified name. This tag will point at the . /// - /// The being worked with. - /// The name of the tag to create. - /// The canonical reference name or sha which should be pointed at by the Tag. - /// The identity of the creator of this tag. - /// The annotation message. + /// The being worked with. + /// The name of the tag to create. + /// The canonical reference name or sha which should be pointed at by the Tag. + /// The identity of the creator of this tag. + /// The annotation message. public static Tag ApplyTag(this Repository repository, string tagName, string target, Signature tagger, string message) { return repository.Tags.Create(tagName, target, tagger, message); } /// - /// Creates a branch with the specified name. This branch will point at the commit pointed at by the . + /// Creates a branch with the specified name. This branch will point at the commit pointed at by the . /// - /// The being worked with. - /// The name of the branch to create. + /// The being worked with. + /// The name of the branch to create. public static Branch CreateBranch(this Repository repository, string branchName) { return CreateBranch(repository, branchName, repository.Head.CanonicalName); } /// - /// Creates a branch with the specified name. This branch will point at the commit pointed at by the . + /// Creates a branch with the specified name. This branch will point at the commit pointed at by the . /// - /// The being worked with. - /// The name of the branch to create. - /// The canonical reference name or sha which should be pointed at by the Branch. + /// The being worked with. + /// The name of the branch to create. + /// The canonical reference name or sha which should be pointed at by the Branch. public static Branch CreateBranch(this Repository repository, string branchName, string target) { return repository.Branches.Create(branchName, target); } /// - /// Stores the content of the as a new into the repository. + /// Stores the content of the as a new into the repository. /// - /// The being worked with. - /// The of who made the change. - /// The of who added the change to the repository. - /// The description of why a change was made to the repository. - /// The generated . + /// The being worked with. + /// The of who made the change. + /// The of who added the change to the repository. + /// The description of why a change was made to the repository. + /// The generated . public static Commit Commit(this Repository repository, Signature author, Signature committer, string message) { return repository.Commits.Create(author, committer, message); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/RepositoryInformation.cs b/LibGit2Sharp/RepositoryInformation.cs index 555cd7292..8d27f4479 100644 --- a/LibGit2Sharp/RepositoryInformation.cs +++ b/LibGit2Sharp/RepositoryInformation.cs @@ -49,7 +49,7 @@ public bool IsEmpty { get { - var res = NativeMethods.git_repository_is_empty(repo.Handle); + int res = NativeMethods.git_repository_is_empty(repo.Handle); Ensure.Success(res, true); return (res == 1); @@ -63,11 +63,11 @@ public bool IsHeadDetached { get { - var res = NativeMethods.git_repository_head_detached(repo.Handle); + int res = NativeMethods.git_repository_head_detached(repo.Handle); Ensure.Success(res, true); return (res == 1); } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Signature.cs b/LibGit2Sharp/Signature.cs index 45d96b473..a9ede163e 100644 --- a/LibGit2Sharp/Signature.cs +++ b/LibGit2Sharp/Signature.cs @@ -28,7 +28,7 @@ internal Signature(IntPtr signaturePtr, bool ownedByRepo = true) /// The email. /// The when. public Signature(string name, string email, DateTimeOffset when) - : this(NativeMethods.git_signature_new(name, email, when.ToSecondsSinceEpoch(), (int) when.Offset.TotalMinutes), false) + : this(NativeMethods.git_signature_new(name, email, when.ToSecondsSinceEpoch(), (int)when.Offset.TotalMinutes), false) { } @@ -68,4 +68,4 @@ public DateTimeOffset When } } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/SymbolicReference.cs b/LibGit2Sharp/SymbolicReference.cs index e1a8290aa..c142c82a7 100644 --- a/LibGit2Sharp/SymbolicReference.cs +++ b/LibGit2Sharp/SymbolicReference.cs @@ -13,10 +13,10 @@ public class SymbolicReference : Reference /// /// Recursively peels the target of the reference until a direct reference is encountered. /// - /// The this points to. + /// The this points to. public override DirectReference ResolveToDirectReference() { return (Target == null) ? null : Target.ResolveToDirectReference(); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Tag.cs b/LibGit2Sharp/Tag.cs index 8277d5f01..376c297a5 100644 --- a/LibGit2Sharp/Tag.cs +++ b/LibGit2Sharp/Tag.cs @@ -9,7 +9,7 @@ namespace LibGit2Sharp public class Tag : IEquatable { private static readonly LambdaEqualityHelper equalityHelper = - new LambdaEqualityHelper(new Func[] { x => x.CanonicalName, x => x.Target }); + new LambdaEqualityHelper(new Func[] { x => x.CanonicalName, x => x.Target }); private readonly Lazy targetBuilder; @@ -25,9 +25,12 @@ internal Tag(string canonicalName, ObjectId targetId, Repository repo) /// /// Gets the optional information associated to this tag. - /// When the is a lightweight tag, null is returned. + /// When the is a lightweight tag, null is returned. /// - public TagAnnotation Annotation { get { return targetBuilder.Value as TagAnnotation; } } + public TagAnnotation Annotation + { + get { return targetBuilder.Value as TagAnnotation; } + } /// /// Gets the full name of this branch. @@ -37,21 +40,25 @@ internal Tag(string canonicalName, ObjectId targetId, Repository repo) /// /// Gets the name of this tag. /// - public string Name { get { return Shorten(CanonicalName); } } + public string Name + { + get { return Shorten(CanonicalName); } + } /// - /// Gets the that this tag points to. + /// Gets the that this tag points to. /// - public GitObject Target { + public GitObject Target + { get { - var target = targetBuilder.Value; + GitObject target = targetBuilder.Value; if ((!(target is TagAnnotation))) { return target; } - + return ((TagAnnotation)target).Target; } } @@ -59,7 +66,10 @@ public GitObject Target { /// /// Indicates whether the tag holds any metadata. /// - public bool IsAnnotated { get { return Annotation != null; } } + public bool IsAnnotated + { + get { return Annotation != null; } + } private static string Shorten(string tagName) { @@ -69,36 +79,36 @@ private static string Shorten(string tagName) } /// - /// Returns the , a representation of the current . + /// Returns the , a representation of the current . /// - /// The that represents the current . + /// The that represents the current . public override string ToString() { return CanonicalName; } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public override bool Equals(object obj) { return Equals(obj as Tag); } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public bool Equals(Tag other) { - return equalityHelper.Equals(this, other); + return equalityHelper.Equals(this, other); } /// - /// Returns the hash code for this instance. + /// Returns the hash code for this instance. /// /// A 32-bit signed integer hash code. public override int GetHashCode() @@ -107,10 +117,10 @@ public override int GetHashCode() } /// - /// Tests if two are equal. + /// Tests if two are equal. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are equal; false otherwise. public static bool operator ==(Tag left, Tag right) { @@ -118,14 +128,14 @@ public override int GetHashCode() } /// - /// Tests if two are different. + /// Tests if two are different. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are different; false otherwise. public static bool operator !=(Tag left, Tag right) { return !Equals(left, right); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/TagAnnotation.cs b/LibGit2Sharp/TagAnnotation.cs index faf54eb8d..ac3cc37dd 100644 --- a/LibGit2Sharp/TagAnnotation.cs +++ b/LibGit2Sharp/TagAnnotation.cs @@ -27,9 +27,12 @@ internal TagAnnotation(ObjectId id) public string Message { get; private set; } /// - /// Gets the that this tag annotation points to. + /// Gets the that this tag annotation points to. /// - public GitObject Target { get { return targetBuilder.Value; } } + public GitObject Target + { + get { return targetBuilder.Value; } + } /// /// Gets the tagger. @@ -38,7 +41,7 @@ internal TagAnnotation(ObjectId id) internal static TagAnnotation BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) { - var oidPtr = NativeMethods.git_tag_target_oid(obj); + IntPtr oidPtr = NativeMethods.git_tag_target_oid(obj); var oid = (GitOid)Marshal.PtrToStructure(oidPtr, typeof(GitOid)); return new TagAnnotation(id) @@ -50,4 +53,4 @@ internal static TagAnnotation BuildFromPtr(IntPtr obj, ObjectId id, Repository r }; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/TagCollection.cs b/LibGit2Sharp/TagCollection.cs index fe82fe177..7f4227ccc 100644 --- a/LibGit2Sharp/TagCollection.cs +++ b/LibGit2Sharp/TagCollection.cs @@ -29,18 +29,15 @@ internal TagCollection(Repository repo) /// public Tag this[string name] { - get - { - return repo.Refs.Resolve(NormalizeToCanonicalName(name)); - } + get { return repo.Refs.Resolve(NormalizeToCanonicalName(name)); } } #region IEnumerable Members /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { return Libgit2UnsafeHelper @@ -50,9 +47,9 @@ public IEnumerator GetEnumerator() } /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); @@ -67,7 +64,7 @@ IEnumerator IEnumerable.GetEnumerator() /// The target which can be sha or a canonical reference name. /// The tagger. /// The message. - /// True to allow silent overwriting a potentially existing tag, false otherwise. + /// True to allow silent overwriting a potentially existing tag, false otherwise. /// public Tag Create(string name, string target, Signature tagger, string message, bool allowOverwrite = false) { @@ -95,7 +92,7 @@ public Tag Create(string name, string target, Signature tagger, string message, /// /// The name. /// The target which can be sha or a canonical reference name. - /// True to allow silent overwriting a potentially existing tag, false otherwise. + /// True to allow silent overwriting a potentially existing tag, false otherwise. /// public Tag Create(string name, string target, bool allowOverwrite = false) { @@ -130,7 +127,7 @@ public void Delete(string name) private GitObject RetrieveObjectToTag(string target) { - var objectToTag = repo.Lookup(target); + GitObject objectToTag = repo.Lookup(target); if (objectToTag == null) { @@ -164,4 +161,4 @@ private static string UnCanonicalizeName(string name) return name.Substring(refsTagsPrefix.Length); } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/Tree.cs b/LibGit2Sharp/Tree.cs index 2dfec8196..68d2a0ea4 100644 --- a/LibGit2Sharp/Tree.cs +++ b/LibGit2Sharp/Tree.cs @@ -60,9 +60,9 @@ public IEnumerable Files #region IEnumerable Members /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. public IEnumerator GetEnumerator() { using (var obj = new ObjectSafeWrapper(Id, repo)) @@ -76,9 +76,9 @@ public IEnumerator GetEnumerator() } /// - /// Returns an enumerator that iterates through the collection. + /// Returns an enumerator that iterates through the collection. /// - /// An object that can be used to iterate through the collection. + /// An object that can be used to iterate through the collection. IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); @@ -92,4 +92,4 @@ internal static Tree BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) return tree; } } -} \ No newline at end of file +} diff --git a/LibGit2Sharp/TreeEntry.cs b/LibGit2Sharp/TreeEntry.cs index caebe6429..9181c8c9a 100755 --- a/LibGit2Sharp/TreeEntry.cs +++ b/LibGit2Sharp/TreeEntry.cs @@ -5,7 +5,7 @@ namespace LibGit2Sharp { /// - /// Representation of an entry in a . + /// Representation of an entry in a . /// public class TreeEntry : IEquatable { @@ -31,23 +31,26 @@ internal TreeEntry(IntPtr obj, ObjectId parentTreeId, Repository repo) } /// - /// Gets the UNIX file attributes. + /// Gets the UNIX file attributes. /// public int Attributes { get; private set; } /// - /// Gets the filename. - /// The filename is expressed in a relative form. Path segments are separated with a forward slash."/> + /// Gets the filename. + /// The filename is expressed in a relative form. Path segments are separated with a forward slash."/> /// public string Name { get; private set; } /// - /// Gets the being pointed at. + /// Gets the being pointed at. /// - public GitObject Target { get { return target.Value; } } + public GitObject Target + { + get { return target.Value; } + } /// - /// Gets the of the being pointed at. + /// Gets the of the being pointed at. /// public GitObjectType Type { get; private set; } @@ -62,27 +65,27 @@ private GitObject RetreiveTreeEntryTarget() } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public override bool Equals(object obj) { return Equals(obj as TreeEntry); } /// - /// Determines whether the specified is equal to the current . + /// Determines whether the specified is equal to the current . /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. public bool Equals(TreeEntry other) { return equalityHelper.Equals(this, other); } /// - /// Returns the hash code for this instance. + /// Returns the hash code for this instance. /// /// A 32-bit signed integer hash code. public override int GetHashCode() @@ -91,10 +94,10 @@ public override int GetHashCode() } /// - /// Tests if two are equal. + /// Tests if two are equal. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are equal; false otherwise. public static bool operator ==(TreeEntry left, TreeEntry right) { @@ -102,14 +105,14 @@ public override int GetHashCode() } /// - /// Tests if two are different. + /// Tests if two are different. /// - /// First to compare. - /// Second to compare. + /// First to compare. + /// Second to compare. /// True if the two objects are different; false otherwise. public static bool operator !=(TreeEntry left, TreeEntry right) { return !Equals(left, right); } } -} \ No newline at end of file +} diff --git a/ResharperSettings.xml b/ResharperSettings.xml index e7a2f8e1e..3afd3d805 100644 --- a/ResharperSettings.xml +++ b/ResharperSettings.xml @@ -1,8 +1,14 @@ + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD 1 1 + True public protected @@ -19,6 +25,10 @@ unsafe volatile + False + False + False + True False @@ -268,7 +278,12 @@ II.2.12 - + + + + + + From 17028254bebdb6d6ed6382d41c8365ff33ab7c48 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Mon, 26 Sep 2011 19:32:11 +0200 Subject: [PATCH 11/28] Add .gitattributes file and fix line endings --- .gitattributes | 13 + Lib/.gitattributes | 1 + LibGit2Sharp.Tests/BlobFixture.cs | 144 ++--- LibGit2Sharp.Tests/CommitFixture.cs | 794 ++++++++++++------------- LibGit2Sharp.Tests/TreeFixture.cs | 292 ++++----- LibGit2Sharp/Blob.cs | 136 ++--- LibGit2Sharp/Core/ObjectSafeWrapper.cs | 96 +-- LibGit2Sharp/Tree.cs | 190 +++--- LibGit2Sharp/TreeEntry.cs | 236 ++++---- 9 files changed, 958 insertions(+), 944 deletions(-) create mode 100644 .gitattributes create mode 100644 Lib/.gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..5a2e01507 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,13 @@ +*.sln crlf +*.csproj crlf +*.cs crlf + +*.md crlf + +*.cmd crlf +*.msbuild crlf +*.xml crlf +*.nuspec crlf +*.ps1 crlf + +.gitattributes crlf diff --git a/Lib/.gitattributes b/Lib/.gitattributes new file mode 100644 index 000000000..23d9bdb29 --- /dev/null +++ b/Lib/.gitattributes @@ -0,0 +1 @@ +* binary diff --git a/LibGit2Sharp.Tests/BlobFixture.cs b/LibGit2Sharp.Tests/BlobFixture.cs index d130561d0..aa861679a 100755 --- a/LibGit2Sharp.Tests/BlobFixture.cs +++ b/LibGit2Sharp.Tests/BlobFixture.cs @@ -1,72 +1,72 @@ -using System.IO; -using System.Text; -using LibGit2Sharp.Tests.TestHelpers; -using NUnit.Framework; - -namespace LibGit2Sharp.Tests -{ - [TestFixture] - public class BlobFixture : BaseFixture - { - [Test] - public void CanGetBlobAsUtf8() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - - string text = blob.ContentAsUtf8(); - text.ShouldEqual("hey there\n"); - } - } - - [Test] - public void CanGetBlobSize() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - blob.Size.ShouldEqual(10); - } - } - - [Test] - public void CanLookUpBlob() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - blob.ShouldNotBeNull(); - } - } - - [Test] - public void CanReadBlobContent() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - byte[] bytes = blob.Content; - bytes.Length.ShouldEqual(10); - - string content = Encoding.UTF8.GetString(bytes); - content.ShouldEqual("hey there\n"); - } - } - - [Test] - public void CanReadBlobStream() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - - using (var tr = new StreamReader(blob.ContentStream, Encoding.UTF8)) - { - string content = tr.ReadToEnd(); - content.ShouldEqual("hey there\n"); - } - } - } - } -} +using System.IO; +using System.Text; +using LibGit2Sharp.Tests.TestHelpers; +using NUnit.Framework; + +namespace LibGit2Sharp.Tests +{ + [TestFixture] + public class BlobFixture : BaseFixture + { + [Test] + public void CanGetBlobAsUtf8() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); + + string text = blob.ContentAsUtf8(); + text.ShouldEqual("hey there\n"); + } + } + + [Test] + public void CanGetBlobSize() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); + blob.Size.ShouldEqual(10); + } + } + + [Test] + public void CanLookUpBlob() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); + blob.ShouldNotBeNull(); + } + } + + [Test] + public void CanReadBlobContent() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); + byte[] bytes = blob.Content; + bytes.Length.ShouldEqual(10); + + string content = Encoding.UTF8.GetString(bytes); + content.ShouldEqual("hey there\n"); + } + } + + [Test] + public void CanReadBlobStream() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var blob = repo.Lookup("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); + + using (var tr = new StreamReader(blob.ContentStream, Encoding.UTF8)) + { + string content = tr.ReadToEnd(); + content.ShouldEqual("hey there\n"); + } + } + } + } +} diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index daec27e8b..fde86cfc8 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -1,397 +1,397 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using LibGit2Sharp.Core; -using LibGit2Sharp.Tests.TestHelpers; -using NUnit.Framework; - -namespace LibGit2Sharp.Tests -{ - [TestFixture] - public class CommitFixture : BaseFixture - { - private const string sha = "8496071c1b46c854b31185ea97743be6a8774479"; - private readonly List expectedShas = new List { "a4a7d", "c4780", "9fd73", "4a202", "5b5b0", "84960" }; - - [Test] - public void CanCountCommits() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - repo.Commits.Count().ShouldEqual(7); - } - } - - [Test] - public void CanCorrectlyCountCommitsWhenSwitchingToAnotherBranch() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - repo.Branches.Checkout("test"); - repo.Commits.Count().ShouldEqual(2); - repo.Commits.First().Id.Sha.ShouldEqual("e90810b8df3e80c413d903f631643c716887138d"); - - repo.Branches.Checkout("master"); - repo.Commits.Count().ShouldEqual(7); - repo.Commits.First().Id.Sha.ShouldEqual("4c062a6361ae6959e06292c1fa5e2822d9c96345"); - } - } - - [Test] - public void CanEnumerateCommits() - { - int count = 0; - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - foreach (Commit commit in repo.Commits) - { - commit.ShouldNotBeNull(); - count++; - } - } - count.ShouldEqual(7); - } - - [Test] - public void CanEnumerateCommitsInDetachedHeadState() - { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) - { - ObjectId parentOfHead = repo.Head.Tip.Parents.First().Id; - - repo.Refs.Create("HEAD", parentOfHead.Sha, true); - Assert.AreEqual(true, repo.Info.IsHeadDetached); - - repo.Commits.Count().ShouldEqual(6); - } - } - - [Test] - public void DefaultOrderingWhenEnumeratingCommitsIsTimeBased() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - repo.Commits.SortedBy.ShouldEqual(GitSortOptions.Time); - } - } - - [Test] - public void CanEnumerateCommitsFromSha() - { - int count = 0; - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f" })) - { - commit.ShouldNotBeNull(); - count++; - } - } - count.ShouldEqual(6); - } - - [Test] - public void QueryingTheCommitHistoryWithUnknownShaOrInvalidEntryPointThrows() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha }).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef" }).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = null }).Count()); - } - } - - [Test] - public void QueryingTheCommitHistoryFromACorruptedReferenceThrows() - { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) - { - CreateCorruptedDeadBeefHead(repo.Info.Path); - - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Branches["deadbeef"] }).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Refs["refs/heads/deadbeef"] }).Count()); - } - } - - [Test] - public void QueryingTheCommitHistoryWithBadParamsThrows() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = string.Empty })); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = null })); - Assert.Throws(() => repo.Commits.QueryBy(null)); - } - } - - [Test] - public void CanEnumerateCommitsWithReverseTimeSorting() - { - expectedShas.Reverse(); - int count = 0; - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse })) - { - commit.ShouldNotBeNull(); - commit.Sha.StartsWith(expectedShas[count]); - count++; - } - } - count.ShouldEqual(6); - } - - [Test] - public void CanEnumerateCommitsWithReverseTopoSorting() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - List commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse }).ToList(); - foreach (Commit commit in commits) - { - commit.ShouldNotBeNull(); - foreach (Commit p in commit.Parents) - { - Commit parent = commits.Single(x => x.Id == p.Id); - Assert.Greater(commits.IndexOf(commit), commits.IndexOf(parent)); - } - } - } - } - - [Test] - public void CanEnumerateCommitsWithTimeSorting() - { - int count = 0; - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time })) - { - commit.ShouldNotBeNull(); - commit.Sha.StartsWith(expectedShas[count]); - count++; - } - } - count.ShouldEqual(6); - } - - [Test] - public void CanEnumerateCommitsWithTopoSorting() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - List commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Topological }).ToList(); - foreach (Commit commit in commits) - { - commit.ShouldNotBeNull(); - foreach (Commit p in commit.Parents) - { - Commit parent = commits.Single(x => x.Id == p.Id); - Assert.Less(commits.IndexOf(commit), commits.IndexOf(parent)); - } - } - } - } - - [Test] - public void CanEnumerateUsingTwoHeadsAsBoundaries() - { - AssertEnumerationOfCommits( - repo => new Filter { Since = "HEAD", Until = "refs/heads/br2" }, - new[] { "4c062a6", "be3563a" } - ); - } - - [Test] - public void CanEnumerateUsingOneHeadAsBoundaries() - { - AssertEnumerationOfCommits( - repo => new Filter { Until = "refs/heads/br2" }, - new[] { "4c062a6", "be3563a" } - ); - } - - [Test] - public void CanEnumerateUsingTwoAbbreviatedShasAsBoundaries() - { - AssertEnumerationOfCommits( - repo => new Filter { Since = "a4a7dce", Until = "4a202b3" }, - new[] { "a4a7dce", "c47800c", "9fd738e" } - ); - } - - [Test] - public void CanEnumerateCommitsFromTwoHeads() - { - AssertEnumerationOfCommits( - repo => new Filter { Since = new[] { "refs/heads/br2", "refs/heads/master" } }, - new[] - { - "4c062a6", "a4a7dce", "be3563a", "c47800c", - "9fd738e", "4a202b3", "5b5b025", "8496071", - }); - } - - [Test] - public void CanEnumerateCommitsFromMixedStartingPoints() - { - AssertEnumerationOfCommits( - repo => new Filter { Since = new object[] { repo.Branches["br2"], "refs/heads/master", new ObjectId("e90810b") } }, - new[] - { - "4c062a6", "e90810b", "6dcf9bf", "a4a7dce", - "be3563a", "c47800c", "9fd738e", "4a202b3", - "5b5b025", "8496071", - }); - } - - [Test] - public void CanEnumerateCommitsFromAnAnnotatedTag() - { - CanEnumerateCommitsFromATag(t => t); - } - - [Test] - public void CanEnumerateCommitsFromATagAnnotation() - { - CanEnumerateCommitsFromATag(t => t.Annotation); - } - - private static void CanEnumerateCommitsFromATag(Func transformer) - { - AssertEnumerationOfCommits( - repo => new Filter { Since = transformer(repo.Tags["test"]) }, - new[] { "e90810b", "6dcf9bf", } - ); - } - - [Test] - public void CanEnumerateAllCommits() - { - AssertEnumerationOfCommits( - repo => new Filter { Since = repo.Refs }, - new[] - { - "4c062a6", "e90810b", "6dcf9bf", "a4a7dce", - "be3563a", "c47800c", "9fd738e", "4a202b3", - "41bc8c6", "5001298", "5b5b025", "8496071", - }); - } - - private static void AssertEnumerationOfCommits(Func filterBuilder, IEnumerable abbrevIds) - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - ICommitCollection commits = repo.Commits.QueryBy(filterBuilder(repo)); - - IEnumerable commitShas = commits.Select(c => c.Id.ToString(7)).ToArray(); - - CollectionAssert.AreEqual(abbrevIds, commitShas); - } - } - - [Test] - public void CanLookupCommitGeneric() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var commit = repo.Lookup(sha); - commit.Message.ShouldEqual("testing\n"); - commit.MessageShort.ShouldEqual("testing"); - commit.Sha.ShouldEqual(sha); - } - } - - [Test] - public void CanReadCommitData() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - GitObject obj = repo.Lookup(sha); - obj.ShouldNotBeNull(); - obj.GetType().ShouldEqual(typeof(Commit)); - - var commit = (Commit)obj; - commit.Message.ShouldEqual("testing\n"); - commit.MessageShort.ShouldEqual("testing"); - commit.Sha.ShouldEqual(sha); - - commit.Author.ShouldNotBeNull(); - commit.Author.Name.ShouldEqual("Scott Chacon"); - commit.Author.Email.ShouldEqual("schacon@gmail.com"); - commit.Author.When.ToSecondsSinceEpoch().ShouldEqual(1273360386); - - commit.Committer.ShouldNotBeNull(); - commit.Committer.Name.ShouldEqual("Scott Chacon"); - commit.Committer.Email.ShouldEqual("schacon@gmail.com"); - commit.Committer.When.ToSecondsSinceEpoch().ShouldEqual(1273360386); - - commit.Tree.Sha.ShouldEqual("181037049a54a1eb5fab404658a3a250b44335d7"); - - commit.Parents.Count().ShouldEqual(0); - } - } - - [Test] - public void CanReadCommitWithMultipleParents() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var commit = repo.Lookup("a4a7dce85cf63874e984719f4fdd239f5145052f"); - commit.Parents.Count().ShouldEqual(2); - } - } - - [Test] - public void CanCommitALittleBit() - { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); - Path.IsPathRooted(dir).ShouldBeTrue(); - Directory.Exists(dir).ShouldBeTrue(); - - using (var repo = new Repository(dir)) - { - string filePath = Path.Combine(repo.Info.WorkingDirectory, "new.txt"); - - File.WriteAllText(filePath, "null"); - repo.Index.Stage("new.txt"); - File.AppendAllText(filePath, "token\n"); - repo.Index.Stage("new.txt"); - - var author = new Signature("Author N. Ame", "him@there.com", DateTimeOffset.Now.AddSeconds(-10)); - Commit commit = repo.Commit(author, author, "Initial egotistic commit"); - - commit.Parents.Count().ShouldEqual(0); - repo.Info.IsEmpty.ShouldBeFalse(); - - File.WriteAllText(filePath, "nulltoken commits!\n"); - repo.Index.Stage("new.txt"); - - var author2 = new Signature(author.Name, author.Email, author.When.AddSeconds(5)); - Commit commit2 = repo.Commit(author2, author2, "Are you trying to fork me?"); - - commit2.Parents.Count().ShouldEqual(1); - commit2.Parents.First().Id.ShouldEqual(commit.Id); - - repo.CreateBranch("davidfowl-rules", commit.Id.Sha); //TODO: This cries for a shortcut method :-/ - repo.Branches.Checkout("davidfowl-rules"); //TODO: This cries for a shortcut method :-/ - - File.WriteAllText(filePath, "davidfowl commits!\n"); - - var author3 = new Signature("David Fowler", "david.fowler@microsoft.com", author.When.AddSeconds(2)); - repo.Index.Stage("new.txt"); - - Commit commit3 = repo.Commit(author3, author3, "I'm going to branch you backwards in time!"); - - commit3.Parents.Count().ShouldEqual(1); - commit3.Parents.First().Id.ShouldEqual(commit.Id); - } - } - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using LibGit2Sharp.Core; +using LibGit2Sharp.Tests.TestHelpers; +using NUnit.Framework; + +namespace LibGit2Sharp.Tests +{ + [TestFixture] + public class CommitFixture : BaseFixture + { + private const string sha = "8496071c1b46c854b31185ea97743be6a8774479"; + private readonly List expectedShas = new List { "a4a7d", "c4780", "9fd73", "4a202", "5b5b0", "84960" }; + + [Test] + public void CanCountCommits() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + repo.Commits.Count().ShouldEqual(7); + } + } + + [Test] + public void CanCorrectlyCountCommitsWhenSwitchingToAnotherBranch() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + repo.Branches.Checkout("test"); + repo.Commits.Count().ShouldEqual(2); + repo.Commits.First().Id.Sha.ShouldEqual("e90810b8df3e80c413d903f631643c716887138d"); + + repo.Branches.Checkout("master"); + repo.Commits.Count().ShouldEqual(7); + repo.Commits.First().Id.Sha.ShouldEqual("4c062a6361ae6959e06292c1fa5e2822d9c96345"); + } + } + + [Test] + public void CanEnumerateCommits() + { + int count = 0; + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + foreach (Commit commit in repo.Commits) + { + commit.ShouldNotBeNull(); + count++; + } + } + count.ShouldEqual(7); + } + + [Test] + public void CanEnumerateCommitsInDetachedHeadState() + { + using (var path = new TemporaryCloneOfTestRepo()) + using (var repo = new Repository(path.RepositoryPath)) + { + ObjectId parentOfHead = repo.Head.Tip.Parents.First().Id; + + repo.Refs.Create("HEAD", parentOfHead.Sha, true); + Assert.AreEqual(true, repo.Info.IsHeadDetached); + + repo.Commits.Count().ShouldEqual(6); + } + } + + [Test] + public void DefaultOrderingWhenEnumeratingCommitsIsTimeBased() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + repo.Commits.SortedBy.ShouldEqual(GitSortOptions.Time); + } + } + + [Test] + public void CanEnumerateCommitsFromSha() + { + int count = 0; + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f" })) + { + commit.ShouldNotBeNull(); + count++; + } + } + count.ShouldEqual(6); + } + + [Test] + public void QueryingTheCommitHistoryWithUnknownShaOrInvalidEntryPointThrows() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef" }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = null }).Count()); + } + } + + [Test] + public void QueryingTheCommitHistoryFromACorruptedReferenceThrows() + { + using (var path = new TemporaryCloneOfTestRepo()) + using (var repo = new Repository(path.RepositoryPath)) + { + CreateCorruptedDeadBeefHead(repo.Info.Path); + + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Branches["deadbeef"] }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Refs["refs/heads/deadbeef"] }).Count()); + } + } + + [Test] + public void QueryingTheCommitHistoryWithBadParamsThrows() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = string.Empty })); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = null })); + Assert.Throws(() => repo.Commits.QueryBy(null)); + } + } + + [Test] + public void CanEnumerateCommitsWithReverseTimeSorting() + { + expectedShas.Reverse(); + int count = 0; + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse })) + { + commit.ShouldNotBeNull(); + commit.Sha.StartsWith(expectedShas[count]); + count++; + } + } + count.ShouldEqual(6); + } + + [Test] + public void CanEnumerateCommitsWithReverseTopoSorting() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + List commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time | GitSortOptions.Reverse }).ToList(); + foreach (Commit commit in commits) + { + commit.ShouldNotBeNull(); + foreach (Commit p in commit.Parents) + { + Commit parent = commits.Single(x => x.Id == p.Id); + Assert.Greater(commits.IndexOf(commit), commits.IndexOf(parent)); + } + } + } + } + + [Test] + public void CanEnumerateCommitsWithTimeSorting() + { + int count = 0; + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + foreach (Commit commit in repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Time })) + { + commit.ShouldNotBeNull(); + commit.Sha.StartsWith(expectedShas[count]); + count++; + } + } + count.ShouldEqual(6); + } + + [Test] + public void CanEnumerateCommitsWithTopoSorting() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + List commits = repo.Commits.QueryBy(new Filter { Since = "a4a7dce85cf63874e984719f4fdd239f5145052f", SortBy = GitSortOptions.Topological }).ToList(); + foreach (Commit commit in commits) + { + commit.ShouldNotBeNull(); + foreach (Commit p in commit.Parents) + { + Commit parent = commits.Single(x => x.Id == p.Id); + Assert.Less(commits.IndexOf(commit), commits.IndexOf(parent)); + } + } + } + } + + [Test] + public void CanEnumerateUsingTwoHeadsAsBoundaries() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = "HEAD", Until = "refs/heads/br2" }, + new[] { "4c062a6", "be3563a" } + ); + } + + [Test] + public void CanEnumerateUsingOneHeadAsBoundaries() + { + AssertEnumerationOfCommits( + repo => new Filter { Until = "refs/heads/br2" }, + new[] { "4c062a6", "be3563a" } + ); + } + + [Test] + public void CanEnumerateUsingTwoAbbreviatedShasAsBoundaries() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = "a4a7dce", Until = "4a202b3" }, + new[] { "a4a7dce", "c47800c", "9fd738e" } + ); + } + + [Test] + public void CanEnumerateCommitsFromTwoHeads() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = new[] { "refs/heads/br2", "refs/heads/master" } }, + new[] + { + "4c062a6", "a4a7dce", "be3563a", "c47800c", + "9fd738e", "4a202b3", "5b5b025", "8496071", + }); + } + + [Test] + public void CanEnumerateCommitsFromMixedStartingPoints() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = new object[] { repo.Branches["br2"], "refs/heads/master", new ObjectId("e90810b") } }, + new[] + { + "4c062a6", "e90810b", "6dcf9bf", "a4a7dce", + "be3563a", "c47800c", "9fd738e", "4a202b3", + "5b5b025", "8496071", + }); + } + + [Test] + public void CanEnumerateCommitsFromAnAnnotatedTag() + { + CanEnumerateCommitsFromATag(t => t); + } + + [Test] + public void CanEnumerateCommitsFromATagAnnotation() + { + CanEnumerateCommitsFromATag(t => t.Annotation); + } + + private static void CanEnumerateCommitsFromATag(Func transformer) + { + AssertEnumerationOfCommits( + repo => new Filter { Since = transformer(repo.Tags["test"]) }, + new[] { "e90810b", "6dcf9bf", } + ); + } + + [Test] + public void CanEnumerateAllCommits() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = repo.Refs }, + new[] + { + "4c062a6", "e90810b", "6dcf9bf", "a4a7dce", + "be3563a", "c47800c", "9fd738e", "4a202b3", + "41bc8c6", "5001298", "5b5b025", "8496071", + }); + } + + private static void AssertEnumerationOfCommits(Func filterBuilder, IEnumerable abbrevIds) + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + ICommitCollection commits = repo.Commits.QueryBy(filterBuilder(repo)); + + IEnumerable commitShas = commits.Select(c => c.Id.ToString(7)).ToArray(); + + CollectionAssert.AreEqual(abbrevIds, commitShas); + } + } + + [Test] + public void CanLookupCommitGeneric() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var commit = repo.Lookup(sha); + commit.Message.ShouldEqual("testing\n"); + commit.MessageShort.ShouldEqual("testing"); + commit.Sha.ShouldEqual(sha); + } + } + + [Test] + public void CanReadCommitData() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + GitObject obj = repo.Lookup(sha); + obj.ShouldNotBeNull(); + obj.GetType().ShouldEqual(typeof(Commit)); + + var commit = (Commit)obj; + commit.Message.ShouldEqual("testing\n"); + commit.MessageShort.ShouldEqual("testing"); + commit.Sha.ShouldEqual(sha); + + commit.Author.ShouldNotBeNull(); + commit.Author.Name.ShouldEqual("Scott Chacon"); + commit.Author.Email.ShouldEqual("schacon@gmail.com"); + commit.Author.When.ToSecondsSinceEpoch().ShouldEqual(1273360386); + + commit.Committer.ShouldNotBeNull(); + commit.Committer.Name.ShouldEqual("Scott Chacon"); + commit.Committer.Email.ShouldEqual("schacon@gmail.com"); + commit.Committer.When.ToSecondsSinceEpoch().ShouldEqual(1273360386); + + commit.Tree.Sha.ShouldEqual("181037049a54a1eb5fab404658a3a250b44335d7"); + + commit.Parents.Count().ShouldEqual(0); + } + } + + [Test] + public void CanReadCommitWithMultipleParents() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var commit = repo.Lookup("a4a7dce85cf63874e984719f4fdd239f5145052f"); + commit.Parents.Count().ShouldEqual(2); + } + } + + [Test] + public void CanCommitALittleBit() + { + using (var scd = new SelfCleaningDirectory()) + { + string dir = Repository.Init(scd.DirectoryPath); + Path.IsPathRooted(dir).ShouldBeTrue(); + Directory.Exists(dir).ShouldBeTrue(); + + using (var repo = new Repository(dir)) + { + string filePath = Path.Combine(repo.Info.WorkingDirectory, "new.txt"); + + File.WriteAllText(filePath, "null"); + repo.Index.Stage("new.txt"); + File.AppendAllText(filePath, "token\n"); + repo.Index.Stage("new.txt"); + + var author = new Signature("Author N. Ame", "him@there.com", DateTimeOffset.Now.AddSeconds(-10)); + Commit commit = repo.Commit(author, author, "Initial egotistic commit"); + + commit.Parents.Count().ShouldEqual(0); + repo.Info.IsEmpty.ShouldBeFalse(); + + File.WriteAllText(filePath, "nulltoken commits!\n"); + repo.Index.Stage("new.txt"); + + var author2 = new Signature(author.Name, author.Email, author.When.AddSeconds(5)); + Commit commit2 = repo.Commit(author2, author2, "Are you trying to fork me?"); + + commit2.Parents.Count().ShouldEqual(1); + commit2.Parents.First().Id.ShouldEqual(commit.Id); + + repo.CreateBranch("davidfowl-rules", commit.Id.Sha); //TODO: This cries for a shortcut method :-/ + repo.Branches.Checkout("davidfowl-rules"); //TODO: This cries for a shortcut method :-/ + + File.WriteAllText(filePath, "davidfowl commits!\n"); + + var author3 = new Signature("David Fowler", "david.fowler@microsoft.com", author.When.AddSeconds(2)); + repo.Index.Stage("new.txt"); + + Commit commit3 = repo.Commit(author3, author3, "I'm going to branch you backwards in time!"); + + commit3.Parents.Count().ShouldEqual(1); + commit3.Parents.First().Id.ShouldEqual(commit.Id); + } + } + } + } +} diff --git a/LibGit2Sharp.Tests/TreeFixture.cs b/LibGit2Sharp.Tests/TreeFixture.cs index 339c7ab6e..36334e463 100755 --- a/LibGit2Sharp.Tests/TreeFixture.cs +++ b/LibGit2Sharp.Tests/TreeFixture.cs @@ -1,146 +1,146 @@ -using System.Linq; -using LibGit2Sharp.Tests.TestHelpers; -using NUnit.Framework; - -namespace LibGit2Sharp.Tests -{ - [TestFixture] - public class TreeFixture : BaseFixture - { - private const string sha = "581f9824ecaf824221bd36edf5430f2739a7c4f5"; - - [Test] - public void CanCompareTwoTreeEntries() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - TreeEntry treeEntry1 = tree["README"]; - TreeEntry treeEntry2 = tree["README"]; - treeEntry1.ShouldEqual(treeEntry2); - (treeEntry1 == treeEntry2).ShouldBeTrue(); - } - } - - [Test] - public void CanConvertEntryToBlob() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - TreeEntry treeEntry = tree["README"]; - - var blob = treeEntry.Target as Blob; - blob.ShouldNotBeNull(); - } - } - - [Test] - public void CanConvertEntryToTree() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - TreeEntry treeEntry = tree["1"]; - - var subtree = treeEntry.Target as Tree; - subtree.ShouldNotBeNull(); - } - } - - [Test] - public void CanEnumerateBlobs() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - tree.Files.Count().ShouldEqual(3); - } - } - - [Test] - public void CanEnumerateSubTrees() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - tree.Trees.Count().ShouldEqual(1); - } - } - - [Test] - public void CanEnumerateTreeEntries() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - tree.Count().ShouldEqual(tree.Count); - - CollectionAssert.AreEqual(new[] { "1", "README", "branch_file.txt", "new.txt" }, tree.Select(te => te.Name).ToArray()); - } - } - - [Test] - public void CanGetEntryByName() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - TreeEntry treeEntry = tree["README"]; - treeEntry.Target.Sha.ShouldEqual("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); - treeEntry.Name.ShouldEqual("README"); - } - } - - [Test] - public void GettingAnUknownTreeEntryReturnsNull() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - TreeEntry treeEntry = tree["I-do-not-exist"]; - treeEntry.ShouldBeNull(); - } - } - - [Test] - public void CanGetEntryCountFromTree() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - tree.Count.ShouldEqual(4); - } - } - - [Test] - public void CanReadEntryAttributes() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - tree["README"].Attributes.ShouldEqual(33188); - } - } - - [Test] - public void CanReadTheTreeData() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - var tree = repo.Lookup(sha); - tree.ShouldNotBeNull(); - } - } - - [Test] - public void TreeDataIsPresent() - { - using (var repo = new Repository(Constants.BareTestRepoPath)) - { - GitObject tree = repo.Lookup(sha); - tree.ShouldNotBeNull(); - } - } - } -} +using System.Linq; +using LibGit2Sharp.Tests.TestHelpers; +using NUnit.Framework; + +namespace LibGit2Sharp.Tests +{ + [TestFixture] + public class TreeFixture : BaseFixture + { + private const string sha = "581f9824ecaf824221bd36edf5430f2739a7c4f5"; + + [Test] + public void CanCompareTwoTreeEntries() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + TreeEntry treeEntry1 = tree["README"]; + TreeEntry treeEntry2 = tree["README"]; + treeEntry1.ShouldEqual(treeEntry2); + (treeEntry1 == treeEntry2).ShouldBeTrue(); + } + } + + [Test] + public void CanConvertEntryToBlob() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + TreeEntry treeEntry = tree["README"]; + + var blob = treeEntry.Target as Blob; + blob.ShouldNotBeNull(); + } + } + + [Test] + public void CanConvertEntryToTree() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + TreeEntry treeEntry = tree["1"]; + + var subtree = treeEntry.Target as Tree; + subtree.ShouldNotBeNull(); + } + } + + [Test] + public void CanEnumerateBlobs() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + tree.Files.Count().ShouldEqual(3); + } + } + + [Test] + public void CanEnumerateSubTrees() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + tree.Trees.Count().ShouldEqual(1); + } + } + + [Test] + public void CanEnumerateTreeEntries() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + tree.Count().ShouldEqual(tree.Count); + + CollectionAssert.AreEqual(new[] { "1", "README", "branch_file.txt", "new.txt" }, tree.Select(te => te.Name).ToArray()); + } + } + + [Test] + public void CanGetEntryByName() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + TreeEntry treeEntry = tree["README"]; + treeEntry.Target.Sha.ShouldEqual("a8233120f6ad708f843d861ce2b7228ec4e3dec6"); + treeEntry.Name.ShouldEqual("README"); + } + } + + [Test] + public void GettingAnUknownTreeEntryReturnsNull() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + TreeEntry treeEntry = tree["I-do-not-exist"]; + treeEntry.ShouldBeNull(); + } + } + + [Test] + public void CanGetEntryCountFromTree() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + tree.Count.ShouldEqual(4); + } + } + + [Test] + public void CanReadEntryAttributes() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + tree["README"].Attributes.ShouldEqual(33188); + } + } + + [Test] + public void CanReadTheTreeData() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + var tree = repo.Lookup(sha); + tree.ShouldNotBeNull(); + } + } + + [Test] + public void TreeDataIsPresent() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + GitObject tree = repo.Lookup(sha); + tree.ShouldNotBeNull(); + } + } + } +} diff --git a/LibGit2Sharp/Blob.cs b/LibGit2Sharp/Blob.cs index c9d716607..646ae109c 100644 --- a/LibGit2Sharp/Blob.cs +++ b/LibGit2Sharp/Blob.cs @@ -1,68 +1,68 @@ -using System; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using LibGit2Sharp.Core; - -namespace LibGit2Sharp -{ - public class Blob : GitObject - { - private readonly Repository repo; - - internal Blob(Repository repo, ObjectId id) - : base(id) - { - this.repo = repo; - } - - public int Size { get; set; } - - public byte[] Content - { - get - { - using (var obj = new ObjectSafeWrapper(Id, repo)) - { - var arr = new byte[Size]; - Marshal.Copy(NativeMethods.git_blob_rawcontent(obj.ObjectPtr), arr, 0, Size); - return arr; - } - } - } - - public Stream ContentStream - { - get - { - using (var obj = new ObjectSafeWrapper(Id, repo)) - { - IntPtr ptr = NativeMethods.git_blob_rawcontent(obj.ObjectPtr); - unsafe - { - return new UnmanagedMemoryStream((byte*)ptr.ToPointer(), Size); - } - } - } - } - - public string ContentAsUtf8() - { - return Encoding.UTF8.GetString(Content); - } - - public string ContentAsUnicode() - { - return Encoding.Unicode.GetString(Content); - } - - public static Blob BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) - { - var blob = new Blob(repo, id) - { - Size = NativeMethods.git_blob_rawsize(obj) - }; - return blob; - } - } -} +using System; +using System.IO; +using System.Runtime.InteropServices; +using System.Text; +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + public class Blob : GitObject + { + private readonly Repository repo; + + internal Blob(Repository repo, ObjectId id) + : base(id) + { + this.repo = repo; + } + + public int Size { get; set; } + + public byte[] Content + { + get + { + using (var obj = new ObjectSafeWrapper(Id, repo)) + { + var arr = new byte[Size]; + Marshal.Copy(NativeMethods.git_blob_rawcontent(obj.ObjectPtr), arr, 0, Size); + return arr; + } + } + } + + public Stream ContentStream + { + get + { + using (var obj = new ObjectSafeWrapper(Id, repo)) + { + IntPtr ptr = NativeMethods.git_blob_rawcontent(obj.ObjectPtr); + unsafe + { + return new UnmanagedMemoryStream((byte*)ptr.ToPointer(), Size); + } + } + } + } + + public string ContentAsUtf8() + { + return Encoding.UTF8.GetString(Content); + } + + public string ContentAsUnicode() + { + return Encoding.Unicode.GetString(Content); + } + + public static Blob BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) + { + var blob = new Blob(repo, id) + { + Size = NativeMethods.git_blob_rawsize(obj) + }; + return blob; + } + } +} diff --git a/LibGit2Sharp/Core/ObjectSafeWrapper.cs b/LibGit2Sharp/Core/ObjectSafeWrapper.cs index d0c674fea..1564dd5e4 100755 --- a/LibGit2Sharp/Core/ObjectSafeWrapper.cs +++ b/LibGit2Sharp/Core/ObjectSafeWrapper.cs @@ -1,48 +1,48 @@ -using System; - -namespace LibGit2Sharp.Core -{ - internal class ObjectSafeWrapper : IDisposable - { - private IntPtr objectPtr = IntPtr.Zero; - - public ObjectSafeWrapper(ObjectId id, Repository repo) - { - if (id == null) - { - return; - } - - GitOid oid = id.Oid; - int res = NativeMethods.git_object_lookup(out objectPtr, repo.Handle, ref oid, GitObjectType.Any); - Ensure.Success(res); - } - - public IntPtr ObjectPtr - { - get { return objectPtr; } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private void Dispose(bool disposing) - { - if (objectPtr == IntPtr.Zero) - { - return; - } - - NativeMethods.git_object_close(objectPtr); - objectPtr = IntPtr.Zero; - } - - ~ObjectSafeWrapper() - { - Dispose(false); - } - } -} +using System; + +namespace LibGit2Sharp.Core +{ + internal class ObjectSafeWrapper : IDisposable + { + private IntPtr objectPtr = IntPtr.Zero; + + public ObjectSafeWrapper(ObjectId id, Repository repo) + { + if (id == null) + { + return; + } + + GitOid oid = id.Oid; + int res = NativeMethods.git_object_lookup(out objectPtr, repo.Handle, ref oid, GitObjectType.Any); + Ensure.Success(res); + } + + public IntPtr ObjectPtr + { + get { return objectPtr; } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + private void Dispose(bool disposing) + { + if (objectPtr == IntPtr.Zero) + { + return; + } + + NativeMethods.git_object_close(objectPtr); + objectPtr = IntPtr.Zero; + } + + ~ObjectSafeWrapper() + { + Dispose(false); + } + } +} diff --git a/LibGit2Sharp/Tree.cs b/LibGit2Sharp/Tree.cs index 68d2a0ea4..d327f3777 100644 --- a/LibGit2Sharp/Tree.cs +++ b/LibGit2Sharp/Tree.cs @@ -1,95 +1,95 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using LibGit2Sharp.Core; - -namespace LibGit2Sharp -{ - public class Tree : GitObject, IEnumerable - { - private Repository repo; - - internal Tree(ObjectId id) - : base(id) - { - } - - public int Count { get; private set; } - - public TreeEntry this[string name] - { - get - { - using (var obj = new ObjectSafeWrapper(Id, repo)) - { - IntPtr e = NativeMethods.git_tree_entry_byname(obj.ObjectPtr, name); - - if (e == IntPtr.Zero) - { - return null; - } - - return new TreeEntry(e, Id, repo); - } - } - } - - public IEnumerable Trees - { - get - { - return this - .Where(e => e.Type == GitObjectType.Tree) - .Select(e => e.Target) - .Cast(); - } - } - - public IEnumerable Files - { - get - { - return this - .Where(e => e.Type == GitObjectType.Blob) - .Select(e => e.Target) - .Cast(); - } - } - - #region IEnumerable Members - - /// - /// Returns an enumerator that iterates through the collection. - /// - /// An object that can be used to iterate through the collection. - public IEnumerator GetEnumerator() - { - using (var obj = new ObjectSafeWrapper(Id, repo)) - { - for (uint i = 0; i < Count; i++) - { - IntPtr e = NativeMethods.git_tree_entry_byindex(obj.ObjectPtr, i); - yield return new TreeEntry(e, Id, repo); - } - } - } - - /// - /// Returns an enumerator that iterates through the collection. - /// - /// An object that can be used to iterate through the collection. - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - #endregion - - internal static Tree BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) - { - var tree = new Tree(id) { repo = repo, Count = (int)NativeMethods.git_tree_entrycount(obj) }; - return tree; - } - } -} +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + public class Tree : GitObject, IEnumerable + { + private Repository repo; + + internal Tree(ObjectId id) + : base(id) + { + } + + public int Count { get; private set; } + + public TreeEntry this[string name] + { + get + { + using (var obj = new ObjectSafeWrapper(Id, repo)) + { + IntPtr e = NativeMethods.git_tree_entry_byname(obj.ObjectPtr, name); + + if (e == IntPtr.Zero) + { + return null; + } + + return new TreeEntry(e, Id, repo); + } + } + } + + public IEnumerable Trees + { + get + { + return this + .Where(e => e.Type == GitObjectType.Tree) + .Select(e => e.Target) + .Cast(); + } + } + + public IEnumerable Files + { + get + { + return this + .Where(e => e.Type == GitObjectType.Blob) + .Select(e => e.Target) + .Cast(); + } + } + + #region IEnumerable Members + + /// + /// Returns an enumerator that iterates through the collection. + /// + /// An object that can be used to iterate through the collection. + public IEnumerator GetEnumerator() + { + using (var obj = new ObjectSafeWrapper(Id, repo)) + { + for (uint i = 0; i < Count; i++) + { + IntPtr e = NativeMethods.git_tree_entry_byindex(obj.ObjectPtr, i); + yield return new TreeEntry(e, Id, repo); + } + } + } + + /// + /// Returns an enumerator that iterates through the collection. + /// + /// An object that can be used to iterate through the collection. + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + #endregion + + internal static Tree BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) + { + var tree = new Tree(id) { repo = repo, Count = (int)NativeMethods.git_tree_entrycount(obj) }; + return tree; + } + } +} diff --git a/LibGit2Sharp/TreeEntry.cs b/LibGit2Sharp/TreeEntry.cs index 9181c8c9a..bde6b2e5a 100755 --- a/LibGit2Sharp/TreeEntry.cs +++ b/LibGit2Sharp/TreeEntry.cs @@ -1,118 +1,118 @@ -using System; -using System.Runtime.InteropServices; -using LibGit2Sharp.Core; - -namespace LibGit2Sharp -{ - /// - /// Representation of an entry in a . - /// - public class TreeEntry : IEquatable - { - private readonly ObjectId parentTreeId; - private readonly Repository repo; - private readonly Lazy target; - private readonly ObjectId targetOid; - - private static readonly LambdaEqualityHelper equalityHelper = - new LambdaEqualityHelper(new Func[] { x => x.Name, x => x.parentTreeId }); - - internal TreeEntry(IntPtr obj, ObjectId parentTreeId, Repository repo) - { - this.parentTreeId = parentTreeId; - this.repo = repo; - IntPtr gitTreeEntryId = NativeMethods.git_tree_entry_id(obj); - targetOid = new ObjectId((GitOid)Marshal.PtrToStructure(gitTreeEntryId, typeof(GitOid))); - Type = NativeMethods.git_tree_entry_type(obj); - target = new Lazy(RetreiveTreeEntryTarget); - - Attributes = NativeMethods.git_tree_entry_attributes(obj); - Name = NativeMethods.git_tree_entry_name(obj).MarshallAsString(); - } - - /// - /// Gets the UNIX file attributes. - /// - public int Attributes { get; private set; } - - /// - /// Gets the filename. - /// The filename is expressed in a relative form. Path segments are separated with a forward slash."/> - /// - public string Name { get; private set; } - - /// - /// Gets the being pointed at. - /// - public GitObject Target - { - get { return target.Value; } - } - - /// - /// Gets the of the being pointed at. - /// - public GitObjectType Type { get; private set; } - - private GitObject RetreiveTreeEntryTarget() - { - GitObject treeEntryTarget = repo.Lookup(targetOid); - - //TODO: Warning submodules will appear as targets of type Commit - Ensure.ArgumentConformsTo(treeEntryTarget.GetType(), t => typeof(Blob).IsAssignableFrom(t) || typeof(Tree).IsAssignableFrom(t), "treeEntryTarget"); - - return treeEntryTarget; - } - - /// - /// Determines whether the specified is equal to the current . - /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. - public override bool Equals(object obj) - { - return Equals(obj as TreeEntry); - } - - /// - /// Determines whether the specified is equal to the current . - /// - /// The to compare with the current . - /// True if the specified is equal to the current ; otherwise, false. - public bool Equals(TreeEntry other) - { - return equalityHelper.Equals(this, other); - } - - /// - /// Returns the hash code for this instance. - /// - /// A 32-bit signed integer hash code. - public override int GetHashCode() - { - return equalityHelper.GetHashCode(this); - } - - /// - /// Tests if two are equal. - /// - /// First to compare. - /// Second to compare. - /// True if the two objects are equal; false otherwise. - public static bool operator ==(TreeEntry left, TreeEntry right) - { - return Equals(left, right); - } - - /// - /// Tests if two are different. - /// - /// First to compare. - /// Second to compare. - /// True if the two objects are different; false otherwise. - public static bool operator !=(TreeEntry left, TreeEntry right) - { - return !Equals(left, right); - } - } -} +using System; +using System.Runtime.InteropServices; +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + /// + /// Representation of an entry in a . + /// + public class TreeEntry : IEquatable + { + private readonly ObjectId parentTreeId; + private readonly Repository repo; + private readonly Lazy target; + private readonly ObjectId targetOid; + + private static readonly LambdaEqualityHelper equalityHelper = + new LambdaEqualityHelper(new Func[] { x => x.Name, x => x.parentTreeId }); + + internal TreeEntry(IntPtr obj, ObjectId parentTreeId, Repository repo) + { + this.parentTreeId = parentTreeId; + this.repo = repo; + IntPtr gitTreeEntryId = NativeMethods.git_tree_entry_id(obj); + targetOid = new ObjectId((GitOid)Marshal.PtrToStructure(gitTreeEntryId, typeof(GitOid))); + Type = NativeMethods.git_tree_entry_type(obj); + target = new Lazy(RetreiveTreeEntryTarget); + + Attributes = NativeMethods.git_tree_entry_attributes(obj); + Name = NativeMethods.git_tree_entry_name(obj).MarshallAsString(); + } + + /// + /// Gets the UNIX file attributes. + /// + public int Attributes { get; private set; } + + /// + /// Gets the filename. + /// The filename is expressed in a relative form. Path segments are separated with a forward slash."/> + /// + public string Name { get; private set; } + + /// + /// Gets the being pointed at. + /// + public GitObject Target + { + get { return target.Value; } + } + + /// + /// Gets the of the being pointed at. + /// + public GitObjectType Type { get; private set; } + + private GitObject RetreiveTreeEntryTarget() + { + GitObject treeEntryTarget = repo.Lookup(targetOid); + + //TODO: Warning submodules will appear as targets of type Commit + Ensure.ArgumentConformsTo(treeEntryTarget.GetType(), t => typeof(Blob).IsAssignableFrom(t) || typeof(Tree).IsAssignableFrom(t), "treeEntryTarget"); + + return treeEntryTarget; + } + + /// + /// Determines whether the specified is equal to the current . + /// + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. + public override bool Equals(object obj) + { + return Equals(obj as TreeEntry); + } + + /// + /// Determines whether the specified is equal to the current . + /// + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. + public bool Equals(TreeEntry other) + { + return equalityHelper.Equals(this, other); + } + + /// + /// Returns the hash code for this instance. + /// + /// A 32-bit signed integer hash code. + public override int GetHashCode() + { + return equalityHelper.GetHashCode(this); + } + + /// + /// Tests if two are equal. + /// + /// First to compare. + /// Second to compare. + /// True if the two objects are equal; false otherwise. + public static bool operator ==(TreeEntry left, TreeEntry right) + { + return Equals(left, right); + } + + /// + /// Tests if two are different. + /// + /// First to compare. + /// Second to compare. + /// True if the two objects are different; false otherwise. + public static bool operator !=(TreeEntry left, TreeEntry right) + { + return !Equals(left, right); + } + } +} From 90fb33f217355b551ccb9526131b213565ecbe5e Mon Sep 17 00:00:00 2001 From: nulltoken Date: Sat, 24 Sep 2011 20:47:26 +0200 Subject: [PATCH 12/28] Standardize usage of LibGit2Exception --- BACKLOG.md | 1 - LibGit2Sharp.Tests/BranchFixture.cs | 6 ++--- LibGit2Sharp.Tests/CommitFixture.cs | 8 +++---- LibGit2Sharp.Tests/IndexFixture.cs | 2 +- LibGit2Sharp.Tests/ReferenceFixture.cs | 8 +++---- LibGit2Sharp.Tests/RepositoryFixture.cs | 2 +- LibGit2Sharp.Tests/TagFixture.cs | 32 ++++++++++++------------- LibGit2Sharp/CommitCollection.cs | 22 +++++++---------- LibGit2Sharp/Core/Ensure.cs | 2 +- LibGit2Sharp/GitObject.cs | 3 ++- LibGit2Sharp/LibGit2Exception.cs | 20 ++++++++++++++++ LibGit2Sharp/LibGit2Sharp.csproj | 1 + LibGit2Sharp/Reference.cs | 4 ++-- LibGit2Sharp/ReferenceCollection.cs | 4 +++- LibGit2Sharp/TagCollection.cs | 2 +- 15 files changed, 67 insertions(+), 50 deletions(-) create mode 100644 LibGit2Sharp/LibGit2Exception.cs diff --git a/BACKLOG.md b/BACKLOG.md index 3cd82a05f..1141dddcc 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -7,7 +7,6 @@ - Turn duplicated strings "refs/xxx" into properties of a generic Constants helper type - Refactor the error handling (OutputResult -> Exceptions) - Launch Code Analysis (Issues related to interop and marshaling will be worked on once we're able to succesffully exchange non ascii encoded data with libgit2) - - Remove usage of ApplicationException - https://bugzilla.novell.com/show_bug.cgi?id=566247 prevents MonoDevelop users from benefiting from optional parameters while still target at 3.5 - https://bugzilla.novell.com/show_bug.cgi?id=324680 generates false-positive warnings regarding xml documentation when LibGit2Sharp is built with xbuild - The freeing of a newly created signature pointer doesn't "feel" to be done at the right place. diff --git a/LibGit2Sharp.Tests/BranchFixture.cs b/LibGit2Sharp.Tests/BranchFixture.cs index 73f1acbf8..bf0caa918 100644 --- a/LibGit2Sharp.Tests/BranchFixture.cs +++ b/LibGit2Sharp.Tests/BranchFixture.cs @@ -193,8 +193,8 @@ public void CreatingBranchWithUnknownShaTargetThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Branches.Create("my_new_branch", Constants.UnknownSha)); - Assert.Throws(() => repo.Branches.Create("my_new_branch", Constants.UnknownSha.Substring(0, 7))); + Assert.Throws(() => repo.Branches.Create("my_new_branch", Constants.UnknownSha)); + Assert.Throws(() => repo.Branches.Create("my_new_branch", Constants.UnknownSha.Substring(0, 7))); } } @@ -300,7 +300,7 @@ public void BlindlyMovingABranchOverAnExistingOneThrows() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.Branches.Move("br2", "test")); + Assert.Throws(() => repo.Branches.Move("br2", "test")); } } diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index fde86cfc8..9022b8897 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -97,8 +97,8 @@ public void QueryingTheCommitHistoryWithUnknownShaOrInvalidEntryPointThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha }).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef" }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = Constants.UnknownSha }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = "refs/heads/deadbeef" }).Count()); Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = null }).Count()); } } @@ -111,8 +111,8 @@ public void QueryingTheCommitHistoryFromACorruptedReferenceThrows() { CreateCorruptedDeadBeefHead(repo.Info.Path); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Branches["deadbeef"] }).Count()); - Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Refs["refs/heads/deadbeef"] }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Branches["deadbeef"] }).Count()); + Assert.Throws(() => repo.Commits.QueryBy(new Filter { Since = repo.Refs["refs/heads/deadbeef"] }).Count()); } } diff --git a/LibGit2Sharp.Tests/IndexFixture.cs b/LibGit2Sharp.Tests/IndexFixture.cs index c1f3ca373..61fe2b323 100644 --- a/LibGit2Sharp.Tests/IndexFixture.cs +++ b/LibGit2Sharp.Tests/IndexFixture.cs @@ -277,7 +277,7 @@ public void UnstagingANonStagedFileThrows() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - Assert.Throws(() => repo.Index.Unstage("shadowcopy_of_a_unseen_ghost.txt")); + Assert.Throws(() => repo.Index.Unstage("shadowcopy_of_a_unseen_ghost.txt")); } } diff --git a/LibGit2Sharp.Tests/ReferenceFixture.cs b/LibGit2Sharp.Tests/ReferenceFixture.cs index 33421c1c0..f649be470 100644 --- a/LibGit2Sharp.Tests/ReferenceFixture.cs +++ b/LibGit2Sharp.Tests/ReferenceFixture.cs @@ -58,7 +58,7 @@ public void BlindlyCreatingADirectReferenceOverAnExistingOneThrows() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.Refs.Create("refs/heads/master", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644")); + Assert.Throws(() => repo.Refs.Create("refs/heads/master", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644")); } } @@ -68,7 +68,7 @@ public void BlindlyCreatingASymbolicReferenceOverAnExistingOneThrows() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.Refs.Create("HEAD", "refs/head/br2")); + Assert.Throws(() => repo.Refs.Create("HEAD", "refs/head/br2")); } } @@ -430,7 +430,7 @@ public void MovingANonExistingReferenceThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Refs.Move("refs/tags/i-am-void", "refs/atic/tagtest")); + Assert.Throws(() => repo.Refs.Move("refs/tags/i-am-void", "refs/atic/tagtest")); } } @@ -455,7 +455,7 @@ public void BlindlyOverwritingAExistingReferenceThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Refs.Move("refs/heads/packed", "refs/heads/br2")); + Assert.Throws(() => repo.Refs.Move("refs/heads/packed", "refs/heads/br2")); } } diff --git a/LibGit2Sharp.Tests/RepositoryFixture.cs b/LibGit2Sharp.Tests/RepositoryFixture.cs index b7291983e..6713ef9d8 100644 --- a/LibGit2Sharp.Tests/RepositoryFixture.cs +++ b/LibGit2Sharp.Tests/RepositoryFixture.cs @@ -139,7 +139,7 @@ public void CanOpenRepository() [Test] public void OpeningNonExistentRepoThrows() { - Assert.Throws(() => { new Repository("a_bad_path"); }); + Assert.Throws(() => { new Repository("a_bad_path"); }); } [Test] diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs index 989e1ead5..b27398f2e 100644 --- a/LibGit2Sharp.Tests/TagFixture.cs +++ b/LibGit2Sharp.Tests/TagFixture.cs @@ -96,8 +96,8 @@ public void CreatingATagWithNameMatchingAnAlreadyExistingReferenceHierarchyThows using (var repo = new Repository(path.RepositoryPath)) { repo.ApplyTag("i/am/deep"); - Assert.Throws(() => repo.ApplyTag("i/am/deep/rooted")); - Assert.Throws(() => repo.ApplyTag("i/am")); + Assert.Throws(() => repo.ApplyTag("i/am/deep/rooted")); + Assert.Throws(() => repo.ApplyTag("i/am")); } } @@ -178,7 +178,7 @@ public void CreatingATagInAEmptyRepositoryThrows() using (var repo = new Repository(dir)) { - Assert.Throws(() => repo.ApplyTag("mynotag")); + Assert.Throws(() => repo.ApplyTag("mynotag")); } } } @@ -193,7 +193,7 @@ public void CreatingATagForHeadInAEmptyRepositoryThrows() using (var repo = new Repository(dir)) { - Assert.Throws(() => repo.ApplyTag("mytaghead", "HEAD")); + Assert.Throws(() => repo.ApplyTag("mytaghead", "HEAD")); } } } @@ -205,7 +205,7 @@ public void CreatingATagForAnUnknowReferenceShouldFail() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.ApplyTag("mytagnorev", "aaaaaaaaaaa")); + Assert.Throws(() => repo.ApplyTag("mytagnorev", "aaaaaaaaaaa")); } } @@ -216,7 +216,7 @@ public void CreatingATagForAnUnknowObjectIdShouldFail() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.ApplyTag("mytagnorev", Constants.UnknownSha)); + Assert.Throws(() => repo.ApplyTag("mytagnorev", Constants.UnknownSha)); } } @@ -246,7 +246,7 @@ public void CreatingADuplicateTagShouldFail() { repo.ApplyTag("mytag"); - Assert.Throws(() => repo.ApplyTag("mytag")); + Assert.Throws(() => repo.ApplyTag("mytag")); } } @@ -258,10 +258,10 @@ public void CreatingATagWithANonValidNameShouldFail() using (var repo = new Repository(path.RepositoryPath)) { Assert.Throws(() => repo.ApplyTag("")); - Assert.Throws(() => repo.ApplyTag(".othertag")); - Assert.Throws(() => repo.ApplyTag("other tag")); - Assert.Throws(() => repo.ApplyTag("othertag^")); - Assert.Throws(() => repo.ApplyTag("other~tag")); + Assert.Throws(() => repo.ApplyTag(".othertag")); + Assert.Throws(() => repo.ApplyTag("other tag")); + Assert.Throws(() => repo.ApplyTag("othertag^")); + Assert.Throws(() => repo.ApplyTag("other~tag")); } } @@ -365,7 +365,7 @@ public void BlindlyCreatingALightweightTagOverAnExistingOneThrows() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.Tags.Create("e90810b", "refs/heads/br2")); + Assert.Throws(() => repo.Tags.Create("e90810b", "refs/heads/br2")); } } @@ -375,7 +375,7 @@ public void BlindlyCreatingAnAnnotatedTagOverAnExistingOneThrows() using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) { - Assert.Throws(() => repo.Tags.Create("e90810b", "refs/heads/br2", signatureNtk, "a nice message")); + Assert.Throws(() => repo.Tags.Create("e90810b", "refs/heads/br2", signatureNtk, "a nice message")); } } @@ -384,7 +384,7 @@ public void CreateTagWithADuplicateNameThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Tags.Create("test", tagTestSha, signatureTim, "message")); + Assert.Throws(() => repo.Tags.Create("test", tagTestSha, signatureTim, "message")); } } @@ -411,7 +411,7 @@ public void CreateTagWithNotExistingTargetThrows() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Tags.Create("test_tag", Constants.UnknownSha, signatureTim, "message")); + Assert.Throws(() => repo.Tags.Create("test_tag", Constants.UnknownSha, signatureTim, "message")); } } @@ -510,7 +510,7 @@ public void DeletingAnUnknownTagShouldFail() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - Assert.Throws(() => repo.Tags.Delete("unknown-tag")); + Assert.Throws(() => repo.Tags.Delete("unknown-tag")); } } diff --git a/LibGit2Sharp/CommitCollection.cs b/LibGit2Sharp/CommitCollection.cs index af7358f30..c896d3bcb 100644 --- a/LibGit2Sharp/CommitCollection.cs +++ b/LibGit2Sharp/CommitCollection.cs @@ -193,15 +193,7 @@ public CommitEnumerator(Repository repo, IList includedIdentifier, IList public Commit Current { - get - { - if (currentOid == null) - { - throw new InvalidOperationException(); - } - - return repo.Lookup(currentOid); - } + get { return repo.Lookup(currentOid); } } object IEnumerator.Current @@ -300,9 +292,9 @@ private static void EnsureGitObjectNotNull(string shaOrReferenceName, GitObject return; } - throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, - "No valid git object pointed at by '{0}' exists in the repository.", - shaOrReferenceName)); + throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, + "No valid git object pointed at by '{0}' exists in the repository.", + shaOrReferenceName)); } private ObjectId DereferenceToCommit(string identifier) @@ -319,7 +311,9 @@ private ObjectId DereferenceToCommit(string identifier) return DereferenceToCommit(((TagAnnotation)obj).Target.Sha); } - throw new InvalidOperationException(); + throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, + "The Git object pointed at by '{0}' can not be dereferenced to a commit.", + identifier)); } private IEnumerable RetrieveCommitOids(object identifier) @@ -384,7 +378,7 @@ private IEnumerable RetrieveCommitOids(object identifier) yield break; } - throw new InvalidOperationException(string.Format("Unexpected kind of identifier '{0}'.", identifier)); + throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, "Unexpected kind of identifier '{0}'.", identifier)); } } } diff --git a/LibGit2Sharp/Core/Ensure.cs b/LibGit2Sharp/Core/Ensure.cs index 1d4b43853..956dea8a2 100644 --- a/LibGit2Sharp/Core/Ensure.cs +++ b/LibGit2Sharp/Core/Ensure.cs @@ -62,7 +62,7 @@ public static void Success(int result, bool allowPositiveResult = false) string errorMessage = NativeMethods.git_lasterror().MarshallAsString(); - throw new ApplicationException( + throw new LibGit2Exception( String.Format(CultureInfo.InvariantCulture, "An error was raised by libgit2. Error code = {0} ({1}).{2}{3}", Enum.GetName(typeof(GitErrorCode), result), result, Environment.NewLine, errorMessage)); } diff --git a/LibGit2Sharp/GitObject.cs b/LibGit2Sharp/GitObject.cs index 9f537cd63..1e4c66dcc 100644 --- a/LibGit2Sharp/GitObject.cs +++ b/LibGit2Sharp/GitObject.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; using System.Runtime.InteropServices; using LibGit2Sharp.Core; @@ -60,7 +61,7 @@ internal static GitObject CreateFromPtr(IntPtr obj, ObjectId id, Repository repo case GitObjectType.Blob: return Blob.BuildFromPtr(obj, id, repo); default: - throw new InvalidOperationException(string.Format("Unexpected type '{0}' for object '{1}'.", type, id)); + throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, "Unexpected type '{0}' for object '{1}'.", type, id)); } } finally diff --git a/LibGit2Sharp/LibGit2Exception.cs b/LibGit2Sharp/LibGit2Exception.cs new file mode 100644 index 000000000..4445f9e15 --- /dev/null +++ b/LibGit2Sharp/LibGit2Exception.cs @@ -0,0 +1,20 @@ +using System; + +namespace LibGit2Sharp +{ + public class LibGit2Exception : Exception + { + public LibGit2Exception() + { + } + + public LibGit2Exception(string message) + : base(message) + { + } + + public LibGit2Exception(string message, Exception innerException) : base(message, innerException) + { + } + } +} diff --git a/LibGit2Sharp/LibGit2Sharp.csproj b/LibGit2Sharp/LibGit2Sharp.csproj index 775c08ac9..5f85c225b 100644 --- a/LibGit2Sharp/LibGit2Sharp.csproj +++ b/LibGit2Sharp/LibGit2Sharp.csproj @@ -50,6 +50,7 @@ + diff --git a/LibGit2Sharp/Reference.cs b/LibGit2Sharp/Reference.cs index 486459ff6..627303b13 100644 --- a/LibGit2Sharp/Reference.cs +++ b/LibGit2Sharp/Reference.cs @@ -62,7 +62,7 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class break; default: - throw new InvalidOperationException(); + throw new LibGit2Exception(String.Format(CultureInfo.InvariantCulture, "Unable to build a new reference from a type '{0}'.", Enum.GetName(typeof(GitReferenceType), type))); } if (typeof(Reference).IsAssignableFrom(typeof(T))) @@ -82,7 +82,7 @@ internal static T BuildFromPtr(IntPtr ptr, Repository repo) where T : class return new Branch(reference.CanonicalName, targetOid, repo) as T; } - throw new InvalidOperationException( + throw new LibGit2Exception( string.Format(CultureInfo.InvariantCulture, "Unable to build a new instance of '{0}' from a reference of type '{1}'.", typeof(T), Enum.GetName(typeof(GitReferenceType), type))); diff --git a/LibGit2Sharp/ReferenceCollection.cs b/LibGit2Sharp/ReferenceCollection.cs index 95ac66fc3..1158dd5bf 100644 --- a/LibGit2Sharp/ReferenceCollection.cs +++ b/LibGit2Sharp/ReferenceCollection.cs @@ -189,6 +189,7 @@ public Reference UpdateTarget(string name, string target) GitOid oid = id.Oid; res = NativeMethods.git_reference_set_oid(reference, ref oid); break; + case GitReferenceType.Symbolic: if (isObjectIdentifier) { @@ -196,8 +197,9 @@ public Reference UpdateTarget(string name, string target) } res = NativeMethods.git_reference_set_target(reference, target); break; + default: - throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Reference '{0}' has an un unexpected type ('{1}').", name, Enum.GetName(typeof(GitReferenceType), type))); + throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, "Reference '{0}' has an unexpected type ('{1}').", name, Enum.GetName(typeof(GitReferenceType), type))); } Ensure.Success(res); diff --git a/LibGit2Sharp/TagCollection.cs b/LibGit2Sharp/TagCollection.cs index 7f4227ccc..1ba74f2d9 100644 --- a/LibGit2Sharp/TagCollection.cs +++ b/LibGit2Sharp/TagCollection.cs @@ -131,7 +131,7 @@ private GitObject RetrieveObjectToTag(string target) if (objectToTag == null) { - throw new ApplicationException(String.Format(CultureInfo.InvariantCulture, "No object identified by '{0}' can be found in the repository.", target)); + throw new LibGit2Exception(String.Format(CultureInfo.InvariantCulture, "No object identified by '{0}' can be found in the repository.", target)); } return objectToTag; From bb8fc169be03117fff391af3a67db21cfef52927 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Sat, 24 Sep 2011 20:48:31 +0200 Subject: [PATCH 13/28] Prevent enumeration of commits from throwing when starting from a tag which points at a blob or a tree Should fix issue #62. --- LibGit2Sharp.Tests/CommitFixture.cs | 8 ++++++++ LibGit2Sharp.Tests/ReferenceFixture.cs | 4 ++-- LibGit2Sharp.Tests/TagFixture.cs | 4 ++-- LibGit2Sharp/CommitCollection.cs | 7 ++++++- Resources/testrepo.git/refs/tags/point_to_blob | 1 + 5 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 Resources/testrepo.git/refs/tags/point_to_blob diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index 9022b8897..b209b499a 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -281,6 +281,14 @@ public void CanEnumerateAllCommits() }); } + [Test] + public void CanEnumerateCommitsFromATagWhichDoesNotPointAtACommit() + { + AssertEnumerationOfCommits( + repo => new Filter { Since = repo.Tags["point_to_blob"] }, + new string[] { }); + } + private static void AssertEnumerationOfCommits(Func filterBuilder, IEnumerable abbrevIds) { using (var repo = new Repository(Constants.BareTestRepoPath)) diff --git a/LibGit2Sharp.Tests/ReferenceFixture.cs b/LibGit2Sharp.Tests/ReferenceFixture.cs index f649be470..c744c21d4 100644 --- a/LibGit2Sharp.Tests/ReferenceFixture.cs +++ b/LibGit2Sharp.Tests/ReferenceFixture.cs @@ -12,7 +12,7 @@ public class ReferenceFixture : BaseFixture private readonly List expectedRefs = new List { "refs/heads/packed-test", "refs/heads/packed", "refs/heads/br2", "refs/heads/master", "refs/heads/test", - "refs/heads/deadbeef", "refs/tags/test", "refs/tags/e90810b", "refs/tags/lw" + "refs/heads/deadbeef", "refs/tags/test", "refs/tags/e90810b", "refs/tags/lw", "refs/tags/point_to_blob" }; [Test] @@ -218,7 +218,7 @@ public void CanListAllReferencesEvenCorruptedOnes() Assert.Contains(r.CanonicalName, expectedRefs); } - repo.Refs.Count().ShouldEqual(9); + repo.Refs.Count().ShouldEqual(10); } } diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs index b27398f2e..35f059779 100644 --- a/LibGit2Sharp.Tests/TagFixture.cs +++ b/LibGit2Sharp.Tests/TagFixture.cs @@ -10,7 +10,7 @@ namespace LibGit2Sharp.Tests [TestFixture] public class TagFixture : BaseFixture { - private readonly List expectedTags = new List { "test", "e90810b", "lw" }; + private readonly List expectedTags = new List { "test", "e90810b", "lw", "point_to_blob" }; private static readonly Signature signatureTim = new Signature("Tim Clem", "timothy.clem@gmail.com", DateTimeOffset.UtcNow); private static readonly Signature signatureNtk = new Signature("nulltoken", "emeric.fermas@gmail.com", Epoch.ToDateTimeOffset(1300557894, 60)); @@ -523,7 +523,7 @@ public void CanListTags() { expectedTags.Contains(tag.Name).ShouldBeTrue(); } - repo.Tags.Count().ShouldEqual(3); + repo.Tags.Count().ShouldEqual(4); } } diff --git a/LibGit2Sharp/CommitCollection.cs b/LibGit2Sharp/CommitCollection.cs index c896d3bcb..9eebdd85a 100644 --- a/LibGit2Sharp/CommitCollection.cs +++ b/LibGit2Sharp/CommitCollection.cs @@ -245,7 +245,7 @@ private void Dispose(bool disposing) private void InternalHidePush(IList identifier, HidePushSignature hidePush) { - IEnumerable oids = RetrieveCommitOids(identifier); + IEnumerable oids = RetrieveCommitOids(identifier).TakeWhile(o => o != null); foreach (ObjectId actedOn in oids) { @@ -311,6 +311,11 @@ private ObjectId DereferenceToCommit(string identifier) return DereferenceToCommit(((TagAnnotation)obj).Target.Sha); } + if (obj is Blob || obj is Tree) + { + return null; + } + throw new LibGit2Exception(string.Format(CultureInfo.InvariantCulture, "The Git object pointed at by '{0}' can not be dereferenced to a commit.", identifier)); diff --git a/Resources/testrepo.git/refs/tags/point_to_blob b/Resources/testrepo.git/refs/tags/point_to_blob new file mode 100644 index 000000000..f874a3ffc --- /dev/null +++ b/Resources/testrepo.git/refs/tags/point_to_blob @@ -0,0 +1 @@ +1385f264afb75a56a5bec74243be9b367ba4ca08 From 97ac99f75db0f8493bdd82b9e0fec8ff76abcc6f Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 20 Sep 2011 10:51:21 +0200 Subject: [PATCH 14/28] Ensure references are being enumerated in a ordered way --- LibGit2Sharp.Tests/BranchFixture.cs | 8 ++------ LibGit2Sharp.Tests/ReferenceFixture.cs | 15 ++++++--------- LibGit2Sharp.Tests/TagFixture.cs | 10 ++++------ LibGit2Sharp/Core/Libgit2UnsafeHelper.cs | 5 ++++- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/LibGit2Sharp.Tests/BranchFixture.cs b/LibGit2Sharp.Tests/BranchFixture.cs index bf0caa918..a90ca1ab9 100644 --- a/LibGit2Sharp.Tests/BranchFixture.cs +++ b/LibGit2Sharp.Tests/BranchFixture.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using LibGit2Sharp.Tests.TestHelpers; using NUnit.Framework; @@ -9,7 +8,7 @@ namespace LibGit2Sharp.Tests [TestFixture] public class BranchFixture : BaseFixture { - private readonly List expectedBranches = new List { "packed-test", "packed", "br2", "master", "test", "deadbeef" }; + private readonly string[] expectedBranches = new[] { "br2", "master", "packed", "packed-test", "test", }; [Test] public void CanCheckoutAnExistingBranch() @@ -96,10 +95,7 @@ public void CanListAllBranches() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (Branch r in repo.Branches) - { - Assert.Contains(r.Name, expectedBranches); - } + CollectionAssert.AreEqual(expectedBranches, repo.Branches.Select(b => b.Name).ToArray()); repo.Branches.Count().ShouldEqual(5); } diff --git a/LibGit2Sharp.Tests/ReferenceFixture.cs b/LibGit2Sharp.Tests/ReferenceFixture.cs index c744c21d4..1dea48001 100644 --- a/LibGit2Sharp.Tests/ReferenceFixture.cs +++ b/LibGit2Sharp.Tests/ReferenceFixture.cs @@ -9,11 +9,11 @@ namespace LibGit2Sharp.Tests [TestFixture] public class ReferenceFixture : BaseFixture { - private readonly List expectedRefs = new List - { - "refs/heads/packed-test", "refs/heads/packed", "refs/heads/br2", "refs/heads/master", "refs/heads/test", - "refs/heads/deadbeef", "refs/tags/test", "refs/tags/e90810b", "refs/tags/lw", "refs/tags/point_to_blob" - }; + private readonly string[] expectedRefs = new[] + { + "refs/heads/br2", "refs/heads/deadbeef", "refs/heads/master", "refs/heads/packed", "refs/heads/packed-test", + "refs/heads/test", "refs/tags/e90810b", "refs/tags/lw", "refs/tags/point_to_blob", "refs/tags/test", + }; [Test] public void CanCreateADirectReference() @@ -213,10 +213,7 @@ public void CanListAllReferencesEvenCorruptedOnes() { CreateCorruptedDeadBeefHead(repo.Info.Path); - foreach (Reference r in repo.Refs) - { - Assert.Contains(r.CanonicalName, expectedRefs); - } + CollectionAssert.AreEqual(expectedRefs, repo.Refs.Select(r => r.CanonicalName).ToArray()); repo.Refs.Count().ShouldEqual(10); } diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs index 35f059779..c18cfb016 100644 --- a/LibGit2Sharp.Tests/TagFixture.cs +++ b/LibGit2Sharp.Tests/TagFixture.cs @@ -10,7 +10,7 @@ namespace LibGit2Sharp.Tests [TestFixture] public class TagFixture : BaseFixture { - private readonly List expectedTags = new List { "test", "e90810b", "lw", "point_to_blob" }; + private readonly string[] expectedTags = new[] { "e90810b", "lw", "point_to_blob", "test", }; private static readonly Signature signatureTim = new Signature("Tim Clem", "timothy.clem@gmail.com", DateTimeOffset.UtcNow); private static readonly Signature signatureNtk = new Signature("nulltoken", "emeric.fermas@gmail.com", Epoch.ToDateTimeOffset(1300557894, 60)); @@ -519,10 +519,8 @@ public void CanListTags() { using (var repo = new Repository(Constants.BareTestRepoPath)) { - foreach (Tag tag in repo.Tags) - { - expectedTags.Contains(tag.Name).ShouldBeTrue(); - } + CollectionAssert.AreEqual(expectedTags, repo.Tags.Select(t => t.Name).ToArray()); + repo.Tags.Count().ShouldEqual(4); } } @@ -551,7 +549,7 @@ public void ListAllTagsShouldOutputThemInAnOrderedWay() { List tagNames = repo.Tags.Select(t => t.Name).ToList(); - List sortedTags = expectedTags; + List sortedTags = expectedTags.ToList(); sortedTags.Sort(); CollectionAssert.AreEqual(sortedTags, tagNames); diff --git a/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs b/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs index f885ad3e9..c725f005a 100644 --- a/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs +++ b/LibGit2Sharp/Core/Libgit2UnsafeHelper.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace LibGit2Sharp.Core { @@ -36,6 +37,8 @@ private static IList BuildListOf(UnSafeNativeMethods.git_strarray strArr var name = new string(gitStrArray->strings[i]); list.Add(name); } + + list.Sort(StringComparer.Ordinal); } finally { From 9f18382843507e15ed3bf52189bd78238cc1756c Mon Sep 17 00:00:00 2001 From: nulltoken Date: Thu, 22 Sep 2011 16:59:28 +0200 Subject: [PATCH 15/28] Prevent a branch from being removed if it's the current HEAD --- LibGit2Sharp.Tests/BranchFixture.cs | 11 ++++++++++- LibGit2Sharp/BranchCollection.cs | 9 ++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/LibGit2Sharp.Tests/BranchFixture.cs b/LibGit2Sharp.Tests/BranchFixture.cs index a90ca1ab9..f6cf02118 100644 --- a/LibGit2Sharp.Tests/BranchFixture.cs +++ b/LibGit2Sharp.Tests/BranchFixture.cs @@ -222,7 +222,16 @@ public void CreatingBranchWithNullTargetThrows() } [Test] - public void DeletingBranchWithBadParamsThrows() + public void DeletingABranchWhichIsTheCurrentHeadThrows() + { + using (var repo = new Repository(Constants.BareTestRepoPath)) + { + Assert.Throws(() => repo.Branches.Delete(repo.Head.Name)); + } + } + + [Test] + public void DeletingABranchWithBadParamsThrows() { using (var path = new TemporaryCloneOfTestRepo()) using (var repo = new Repository(path.RepositoryPath)) diff --git a/LibGit2Sharp/BranchCollection.cs b/LibGit2Sharp/BranchCollection.cs index b8b40a4e9..e387f7e2e 100644 --- a/LibGit2Sharp/BranchCollection.cs +++ b/LibGit2Sharp/BranchCollection.cs @@ -100,7 +100,14 @@ public void Delete(string name) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); - repo.Refs.Delete(NormalizeToCanonicalName(name)); //TODO: To be replaced by native libgit2 git_branch_delete() when available. + var canonicalName = NormalizeToCanonicalName(name); + + if (canonicalName == repo.Head.CanonicalName) + { + throw new LibGit2Exception(string.Format("Branch '{0}' can not be deleted as it is the current HEAD.", canonicalName)); + } + + repo.Refs.Delete(canonicalName); //TODO: To be replaced by native libgit2 git_branch_delete() when available. } /// From 37997dceb32d3dcf9f3650af5b3daaf8ddde9ffd Mon Sep 17 00:00:00 2001 From: nulltoken Date: Mon, 26 Sep 2011 14:57:19 +0200 Subject: [PATCH 16/28] Move removal of temporary test repositories after the processing of each fixture This has the nice side effect of reducing race concurrencies issues with the file system. --- LibGit2Sharp.Tests/BranchFixture.cs | 27 ++-- LibGit2Sharp.Tests/CommitFixture.cs | 64 +++++---- LibGit2Sharp.Tests/IndexFixture.cs | 124 +++++++++--------- LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj | 1 + LibGit2Sharp.Tests/ReferenceFixture.cs | 38 +++--- LibGit2Sharp.Tests/RepositoryFixture.cs | 84 ++++++------ LibGit2Sharp.Tests/TagFixture.cs | 105 +++++++-------- LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs | 42 +++++- .../TestHelpers/IPostTestDirectoryRemover.cs | 7 + .../TestHelpers/SelfCleaningDirectory.cs | 23 +--- .../TestHelpers/TemporaryCloneOfTestRepo.cs | 3 +- LibGit2Sharp/BranchCollection.cs | 2 +- 12 files changed, 264 insertions(+), 256 deletions(-) create mode 100644 LibGit2Sharp.Tests/TestHelpers/IPostTestDirectoryRemover.cs diff --git a/LibGit2Sharp.Tests/BranchFixture.cs b/LibGit2Sharp.Tests/BranchFixture.cs index f6cf02118..03a8db41a 100644 --- a/LibGit2Sharp.Tests/BranchFixture.cs +++ b/LibGit2Sharp.Tests/BranchFixture.cs @@ -13,7 +13,7 @@ public class BranchFixture : BaseFixture [Test] public void CanCheckoutAnExistingBranch() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Branch master = repo.Branches["master"]; @@ -29,7 +29,7 @@ public void CanCheckoutAnExistingBranch() [Test] public void CanCreateBranch() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; @@ -48,7 +48,7 @@ public void CanCreateBranch() [Test] public void CanCreateBranchUsingAbbreviatedSha() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; @@ -61,7 +61,7 @@ public void CanCreateBranchUsingAbbreviatedSha() [Test] public void CanCreateBranchFromImplicitHead() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; @@ -80,7 +80,7 @@ public void CanCreateBranchFromImplicitHead() [Ignore("Not implemented yet.")] public void CanCreateBranchFromExplicitHead() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string name = "unit_test"; @@ -157,8 +157,7 @@ public void CanWalkCommitsFromBranch() [Test] public void CheckoutBranchWithBadParamsThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.Branches.Checkout(string.Empty)); Assert.Throws(() => repo.Branches.Checkout(null)); @@ -233,8 +232,7 @@ public void DeletingABranchWhichIsTheCurrentHeadThrows() [Test] public void DeletingABranchWithBadParamsThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.Branches.Delete(string.Empty)); Assert.Throws(() => repo.Branches.Delete(null)); @@ -273,7 +271,7 @@ public void OnlyOneBranchIsTheHead() [Test] public void TwoBranchesPointingAtTheSameCommitAreNotBothCurrent() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Branch master = repo.Branches["refs/heads/master"]; @@ -286,7 +284,7 @@ public void TwoBranchesPointingAtTheSameCommitAreNotBothCurrent() [Test] public void CanMoveABranch() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { repo.Branches["br3"].ShouldBeNull(); @@ -302,8 +300,7 @@ public void CanMoveABranch() [Test] public void BlindlyMovingABranchOverAnExistingOneThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.Branches.Move("br2", "test")); } @@ -312,7 +309,7 @@ public void BlindlyMovingABranchOverAnExistingOneThrows() [Test] public void CanMoveABranchWhileOverwritingAnExistingOne() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Branch test = repo.Branches["test"]; @@ -337,7 +334,7 @@ public void CanMoveABranchWhileOverwritingAnExistingOne() [Test] public void CreatingABranchTriggersTheCreationOfADirectReference() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Branch newBranch = repo.CreateBranch("clone-of-master"); diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index b209b499a..aac906e97 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -56,7 +56,7 @@ public void CanEnumerateCommits() [Test] public void CanEnumerateCommitsInDetachedHeadState() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { ObjectId parentOfHead = repo.Head.Tip.Parents.First().Id; @@ -106,7 +106,7 @@ public void QueryingTheCommitHistoryWithUnknownShaOrInvalidEntryPointThrows() [Test] public void QueryingTheCommitHistoryFromACorruptedReferenceThrows() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { CreateCorruptedDeadBeefHead(repo.Info.Path); @@ -356,49 +356,47 @@ public void CanReadCommitWithMultipleParents() [Test] public void CanCommitALittleBit() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); - Path.IsPathRooted(dir).ShouldBeTrue(); - Directory.Exists(dir).ShouldBeTrue(); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); + Path.IsPathRooted(dir).ShouldBeTrue(); + Directory.Exists(dir).ShouldBeTrue(); - using (var repo = new Repository(dir)) - { - string filePath = Path.Combine(repo.Info.WorkingDirectory, "new.txt"); + using (var repo = new Repository(dir)) + { + string filePath = Path.Combine(repo.Info.WorkingDirectory, "new.txt"); - File.WriteAllText(filePath, "null"); - repo.Index.Stage("new.txt"); - File.AppendAllText(filePath, "token\n"); - repo.Index.Stage("new.txt"); + File.WriteAllText(filePath, "null"); + repo.Index.Stage("new.txt"); + File.AppendAllText(filePath, "token\n"); + repo.Index.Stage("new.txt"); - var author = new Signature("Author N. Ame", "him@there.com", DateTimeOffset.Now.AddSeconds(-10)); - Commit commit = repo.Commit(author, author, "Initial egotistic commit"); + var author = new Signature("Author N. Ame", "him@there.com", DateTimeOffset.Now.AddSeconds(-10)); + Commit commit = repo.Commit(author, author, "Initial egotistic commit"); - commit.Parents.Count().ShouldEqual(0); - repo.Info.IsEmpty.ShouldBeFalse(); + commit.Parents.Count().ShouldEqual(0); + repo.Info.IsEmpty.ShouldBeFalse(); - File.WriteAllText(filePath, "nulltoken commits!\n"); - repo.Index.Stage("new.txt"); + File.WriteAllText(filePath, "nulltoken commits!\n"); + repo.Index.Stage("new.txt"); - var author2 = new Signature(author.Name, author.Email, author.When.AddSeconds(5)); - Commit commit2 = repo.Commit(author2, author2, "Are you trying to fork me?"); + var author2 = new Signature(author.Name, author.Email, author.When.AddSeconds(5)); + Commit commit2 = repo.Commit(author2, author2, "Are you trying to fork me?"); - commit2.Parents.Count().ShouldEqual(1); - commit2.Parents.First().Id.ShouldEqual(commit.Id); + commit2.Parents.Count().ShouldEqual(1); + commit2.Parents.First().Id.ShouldEqual(commit.Id); - repo.CreateBranch("davidfowl-rules", commit.Id.Sha); //TODO: This cries for a shortcut method :-/ - repo.Branches.Checkout("davidfowl-rules"); //TODO: This cries for a shortcut method :-/ + repo.CreateBranch("davidfowl-rules", commit.Id.Sha); //TODO: This cries for a shortcut method :-/ + repo.Branches.Checkout("davidfowl-rules"); //TODO: This cries for a shortcut method :-/ - File.WriteAllText(filePath, "davidfowl commits!\n"); + File.WriteAllText(filePath, "davidfowl commits!\n"); - var author3 = new Signature("David Fowler", "david.fowler@microsoft.com", author.When.AddSeconds(2)); - repo.Index.Stage("new.txt"); + var author3 = new Signature("David Fowler", "david.fowler@microsoft.com", author.When.AddSeconds(2)); + repo.Index.Stage("new.txt"); - Commit commit3 = repo.Commit(author3, author3, "I'm going to branch you backwards in time!"); + Commit commit3 = repo.Commit(author3, author3, "I'm going to branch you backwards in time!"); - commit3.Parents.Count().ShouldEqual(1); - commit3.Parents.First().Id.ShouldEqual(commit.Id); - } + commit3.Parents.Count().ShouldEqual(1); + commit3.Parents.First().Id.ShouldEqual(commit.Id); } } } diff --git a/LibGit2Sharp.Tests/IndexFixture.cs b/LibGit2Sharp.Tests/IndexFixture.cs index 61fe2b323..0f73b8906 100644 --- a/LibGit2Sharp.Tests/IndexFixture.cs +++ b/LibGit2Sharp.Tests/IndexFixture.cs @@ -94,7 +94,7 @@ public void CanStageAModifiedFile() [Test] public void CanStageANewFile() { - using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath); using (var repo = new Repository(path.RepositoryPath)) { int count = repo.Index.Count; @@ -112,66 +112,62 @@ public void CanStageANewFile() [Test] public void StagingANewVersionOfAFileThenUnstagingRevertsTheBlobToTheVersionOfHead() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); - using (var repo = new Repository(dir)) - { - repo.Index.Count.ShouldEqual(0); + using (var repo = new Repository(dir)) + { + repo.Index.Count.ShouldEqual(0); - const string fileName = "myFile.txt"; + const string fileName = "myFile.txt"; - string fullpath = Path.Combine(repo.Info.WorkingDirectory, fileName); + string fullpath = Path.Combine(repo.Info.WorkingDirectory, fileName); - const string initialContent = "Hello?"; - File.AppendAllText(fullpath, initialContent); + const string initialContent = "Hello?"; + File.AppendAllText(fullpath, initialContent); - repo.Index.Stage(fileName); - ObjectId blobId = repo.Index[fileName].Id; + repo.Index.Stage(fileName); + ObjectId blobId = repo.Index[fileName].Id; - repo.Commit(Constants.Signature, Constants.Signature, "Initial commit"); - repo.Index.Count.ShouldEqual(1); + repo.Commit(Constants.Signature, Constants.Signature, "Initial commit"); + repo.Index.Count.ShouldEqual(1); - File.AppendAllText(fullpath, "Is there there anybody out there?"); - repo.Index.Stage(fileName); + File.AppendAllText(fullpath, "Is there there anybody out there?"); + repo.Index.Stage(fileName); - repo.Index.Count.ShouldEqual(1); - repo.Index[fileName].Id.ShouldNotEqual((blobId)); + repo.Index.Count.ShouldEqual(1); + repo.Index[fileName].Id.ShouldNotEqual((blobId)); - repo.Index.Unstage(fileName); - repo.Index.Count.ShouldEqual(1); - repo.Index[fileName].Id.ShouldEqual((blobId)); - } + repo.Index.Unstage(fileName); + repo.Index.Count.ShouldEqual(1); + repo.Index[fileName].Id.ShouldEqual((blobId)); } } [Test] public void CanStageANewFileInAPersistentManner() { - using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoPath)) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoPath); + using (var repo = new Repository(path.RepositoryPath)) { - using (var repo = new Repository(path.RepositoryPath)) - { - const string filename = "unit_test.txt"; - File.WriteAllText(Path.Combine(repo.Info.WorkingDirectory, filename), "some contents"); + const string filename = "unit_test.txt"; + File.WriteAllText(Path.Combine(repo.Info.WorkingDirectory, filename), "some contents"); - repo.Index.Stage(filename); - repo.Index[filename].ShouldNotBeNull(); - } + repo.Index.Stage(filename); + repo.Index[filename].ShouldNotBeNull(); + } - using (var repo = new Repository(path.RepositoryPath)) - { - const string filename = "unit_test.txt"; - repo.Index[filename].ShouldNotBeNull(); - } + using (var repo = new Repository(path.RepositoryPath)) + { + const string filename = "unit_test.txt"; + repo.Index[filename].ShouldNotBeNull(); } } [Test] public void CanStageANewFileWithAFullPath() { - using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath); using (var repo = new Repository(path.RepositoryPath)) { int count = repo.Index.Count; @@ -190,8 +186,8 @@ public void CanStageANewFileWithAFullPath() [Test] public void StagingANewFileWithAFullPathWhichEscapesOutOfTheWorkingDirThrows() { - using (var scd = new SelfCleaningDirectory()) - using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath); using (var repo = new Repository(path.RepositoryPath)) { DirectoryInfo di = Directory.CreateDirectory(scd.DirectoryPath); @@ -213,49 +209,47 @@ public void CanStageAPath() [Test] public void CanRenameAFile() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); - using (var repo = new Repository(dir)) - { - repo.Index.Count.ShouldEqual(0); + using (var repo = new Repository(dir)) + { + repo.Index.Count.ShouldEqual(0); - const string oldName = "polite.txt"; - string oldPath = Path.Combine(repo.Info.WorkingDirectory, oldName); + const string oldName = "polite.txt"; + string oldPath = Path.Combine(repo.Info.WorkingDirectory, oldName); - File.WriteAllText(oldPath, "hello test file\n", Encoding.ASCII); - repo.Index.Stage(oldName); + File.WriteAllText(oldPath, "hello test file\n", Encoding.ASCII); + repo.Index.Stage(oldName); - // Generated through - // $ echo "hello test file" | git hash-object --stdin - const string expectedHash = "88df547706c30fa19f02f43cb2396e8129acfd9b"; - repo.Index[oldName].Id.Sha.ShouldEqual((expectedHash)); + // Generated through + // $ echo "hello test file" | git hash-object --stdin + const string expectedHash = "88df547706c30fa19f02f43cb2396e8129acfd9b"; + repo.Index[oldName].Id.Sha.ShouldEqual((expectedHash)); - repo.Index.Count.ShouldEqual(1); + repo.Index.Count.ShouldEqual(1); - Signature who = Constants.Signature; - repo.Commit(who, who, "Initial commit"); + Signature who = Constants.Signature; + repo.Commit(who, who, "Initial commit"); - const string newName = "being.frakking.polite.txt"; + const string newName = "being.frakking.polite.txt"; - repo.Index.Move(oldName, newName); + repo.Index.Move(oldName, newName); - repo.Index.Count.ShouldEqual(1); - repo.Index[newName].Id.Sha.ShouldEqual((expectedHash)); + repo.Index.Count.ShouldEqual(1); + repo.Index[newName].Id.Sha.ShouldEqual((expectedHash)); - who = who.TimeShift(TimeSpan.FromMinutes(5)); - Commit commit = repo.Commit(who, who, "Fix file name"); + who = who.TimeShift(TimeSpan.FromMinutes(5)); + Commit commit = repo.Commit(who, who, "Fix file name"); - commit.Tree[newName].Target.Id.Sha.ShouldEqual(expectedHash); - } + commit.Tree[newName].Target.Id.Sha.ShouldEqual(expectedHash); } } [Test] public void CanUnstageANewFile() { - using (var path = new TemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath)) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath); using (var repo = new Repository(path.RepositoryPath)) { int count = repo.Index.Count; diff --git a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj index ddf10dfc3..a946dba11 100644 --- a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj +++ b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj @@ -57,6 +57,7 @@ + diff --git a/LibGit2Sharp.Tests/ReferenceFixture.cs b/LibGit2Sharp.Tests/ReferenceFixture.cs index 1dea48001..2db5f8b45 100644 --- a/LibGit2Sharp.Tests/ReferenceFixture.cs +++ b/LibGit2Sharp.Tests/ReferenceFixture.cs @@ -20,7 +20,7 @@ public void CanCreateADirectReference() { const string name = "refs/heads/unit_test"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { var newRef = (DirectReference)repo.Refs.Create(name, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); @@ -39,7 +39,7 @@ public void CanCreateASymbolicReference() const string name = "refs/heads/unit_test"; const string target = "refs/heads/master"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { var newRef = (SymbolicReference)repo.Refs.Create(name, target); @@ -55,7 +55,7 @@ public void CanCreateASymbolicReference() [Test] public void BlindlyCreatingADirectReferenceOverAnExistingOneThrows() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Assert.Throws(() => repo.Refs.Create("refs/heads/master", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644")); @@ -65,7 +65,7 @@ public void BlindlyCreatingADirectReferenceOverAnExistingOneThrows() [Test] public void BlindlyCreatingASymbolicReferenceOverAnExistingOneThrows() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Assert.Throws(() => repo.Refs.Create("HEAD", "refs/head/br2")); @@ -78,7 +78,7 @@ public void CanCreateAndOverwriteADirectReference() const string name = "refs/heads/br2"; const string target = "4c062a6361ae6959e06292c1fa5e2822d9c96345"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { var newRef = (DirectReference)repo.Refs.Create(name, target, true); @@ -96,7 +96,7 @@ public void CanCreateAndOverwriteASymbolicReference() const string name = "HEAD"; const string target = "refs/heads/br2"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { var newRef = (SymbolicReference)repo.Refs.Create(name, target, true); @@ -147,7 +147,7 @@ public void CreateWithNullStringThrows() [Test] public void CanDeleteAReference() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { repo.Refs.Delete("refs/heads/packed"); @@ -157,7 +157,7 @@ public void CanDeleteAReference() [Test] public void ADeletedReferenceCannotBeLookedUp() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string refName = "refs/heads/test"; @@ -170,7 +170,7 @@ public void ADeletedReferenceCannotBeLookedUp() [Test] public void DeletingAReferenceDecreasesTheRefsCount() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string refName = "refs/heads/test"; @@ -208,7 +208,7 @@ public void DeleteWithNullNameThrows() [Test] public void CanListAllReferencesEvenCorruptedOnes() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { CreateCorruptedDeadBeefHead(repo.Info.Path); @@ -304,7 +304,7 @@ public void ResolvingWithNullThrows() public void CanUpdateTargetOnReference() { const string masterRef = "refs/heads/master"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { string sha = repo.Refs["refs/heads/test"].ResolveToDirectReference().Target.Sha; @@ -324,7 +324,7 @@ public void CanUpdateTargetOnReference() public void CanUpdateTargetOnSymbolicReference() { const string name = "refs/heads/unit_test"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { var newRef = (SymbolicReference)repo.Refs.Create(name, "refs/heads/master"); @@ -343,7 +343,7 @@ public void CanUpdateTargetOnSymbolicReference() public void UpdatingADirectRefWithSymbolFails() { const string name = "refs/heads/unit_test"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { var newRef = (SymbolicReference)repo.Refs.Create(name, "refs/heads/master"); @@ -381,7 +381,7 @@ public void UpdatingAReferenceTargetWithBadParametersFails() [Test] public void CanMoveAReferenceToADeeperReferenceHierarchy() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string newName = "refs/tags/test/deep"; @@ -395,7 +395,7 @@ public void CanMoveAReferenceToADeeperReferenceHierarchy() [Test] public void CanMoveAReferenceToAUpperReferenceHierarchy() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string newName = "refs/heads/o/sole"; @@ -411,7 +411,7 @@ public void CanMoveAReferenceToAUpperReferenceHierarchy() [Test] public void CanMoveAReferenceToADifferentReferenceHierarchy() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string newName = "refs/atic/tagtest"; @@ -434,7 +434,7 @@ public void MovingANonExistingReferenceThrows() [Test] public void CanMoveAndOverWriteAExistingReference() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string oldName = "refs/heads/packed"; @@ -459,7 +459,7 @@ public void BlindlyOverwritingAExistingReferenceThrows() [Test] public void MovingAReferenceDoesNotDecreaseTheRefsCount() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string oldName = "refs/tags/test"; @@ -481,7 +481,7 @@ public void MovingAReferenceDoesNotDecreaseTheRefsCount() [Test] public void CanLookupAMovedReference() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string oldName = "refs/tags/test"; diff --git a/LibGit2Sharp.Tests/RepositoryFixture.cs b/LibGit2Sharp.Tests/RepositoryFixture.cs index 6713ef9d8..b46c92121 100644 --- a/LibGit2Sharp.Tests/RepositoryFixture.cs +++ b/LibGit2Sharp.Tests/RepositoryFixture.cs @@ -14,48 +14,44 @@ public class RepositoryFixture : BaseFixture [Test] public void CanCreateBareRepo() { - using (var scd = new SelfCleaningDirectory()) + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath, true); + Path.IsPathRooted(dir).ShouldBeTrue(); + Directory.Exists(dir).ShouldBeTrue(); + CheckGitConfigFile(dir); + + using (var repo = new Repository(dir)) { - string dir = Repository.Init(scd.DirectoryPath, true); - Path.IsPathRooted(dir).ShouldBeTrue(); - Directory.Exists(dir).ShouldBeTrue(); - CheckGitConfigFile(dir); - - using (var repo = new Repository(dir)) - { - repo.Info.WorkingDirectory.ShouldBeNull(); - repo.Info.Path.ShouldEqual(scd.RootedDirectoryPath + Path.DirectorySeparatorChar); - repo.Info.IsBare.ShouldBeTrue(); - - AssertInitializedRepository(repo); - } + repo.Info.WorkingDirectory.ShouldBeNull(); + repo.Info.Path.ShouldEqual(scd.RootedDirectoryPath + Path.DirectorySeparatorChar); + repo.Info.IsBare.ShouldBeTrue(); + + AssertInitializedRepository(repo); } } [Test] public void CanCreateStandardRepo() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); - Path.IsPathRooted(dir).ShouldBeTrue(); - Directory.Exists(dir).ShouldBeTrue(); - CheckGitConfigFile(dir); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); + Path.IsPathRooted(dir).ShouldBeTrue(); + Directory.Exists(dir).ShouldBeTrue(); + CheckGitConfigFile(dir); - using (var repo = new Repository(dir)) - { - repo.Info.WorkingDirectory.ShouldNotBeNull(); - repo.Info.Path.ShouldEqual(Path.Combine(scd.RootedDirectoryPath, ".git" + Path.DirectorySeparatorChar)); - repo.Info.IsBare.ShouldBeFalse(); + using (var repo = new Repository(dir)) + { + repo.Info.WorkingDirectory.ShouldNotBeNull(); + repo.Info.Path.ShouldEqual(Path.Combine(scd.RootedDirectoryPath, ".git" + Path.DirectorySeparatorChar)); + repo.Info.IsBare.ShouldBeFalse(); - AssertIsHidden(repo.Info.Path); + AssertIsHidden(repo.Info.Path); - AssertInitializedRepository(repo); - } + AssertInitializedRepository(repo); } } - private void CheckGitConfigFile(string dir) + private static void CheckGitConfigFile(string dir) { string configFilePath = Path.Combine(dir, "config"); File.Exists(configFilePath).ShouldBeTrue(); @@ -242,28 +238,26 @@ public void CanLookupWhithShortIdentifers() const string expectedAbbrevSha = "edfecad"; const string expectedSha = expectedAbbrevSha + "02d96c9dbf64f6e238c45ddcfa762eef0"; - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); - using (var repo = new Repository(dir)) - { - string filePath = Path.Combine(repo.Info.WorkingDirectory, "new.txt"); + using (var repo = new Repository(dir)) + { + string filePath = Path.Combine(repo.Info.WorkingDirectory, "new.txt"); - File.WriteAllText(filePath, "one "); - repo.Index.Stage(filePath); + File.WriteAllText(filePath, "one "); + repo.Index.Stage(filePath); - Signature author = Constants.Signature; - Commit commit = repo.Commit(author, author, "Initial commit"); + Signature author = Constants.Signature; + Commit commit = repo.Commit(author, author, "Initial commit"); - commit.Sha.ShouldEqual(expectedSha); + commit.Sha.ShouldEqual(expectedSha); - GitObject lookedUp1 = repo.Lookup(expectedSha); - lookedUp1.ShouldEqual(commit); + GitObject lookedUp1 = repo.Lookup(expectedSha); + lookedUp1.ShouldEqual(commit); - GitObject lookedUp2 = repo.Lookup(expectedAbbrevSha); - lookedUp2.ShouldEqual(commit); - } + GitObject lookedUp2 = repo.Lookup(expectedAbbrevSha); + lookedUp2.ShouldEqual(commit); } } diff --git a/LibGit2Sharp.Tests/TagFixture.cs b/LibGit2Sharp.Tests/TagFixture.cs index c18cfb016..dc2ffba9c 100644 --- a/LibGit2Sharp.Tests/TagFixture.cs +++ b/LibGit2Sharp.Tests/TagFixture.cs @@ -21,7 +21,7 @@ public class TagFixture : BaseFixture [Test] public void CanCreateALightWeightTagFromSha() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("i_am_lightweight", commitE90810BSha); @@ -33,7 +33,7 @@ public void CanCreateALightWeightTagFromSha() [Test] public void CanCreateALightWeightTagFromAbbreviatedSha() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("i_am_lightweight", commitE90810BSha.Substring(0, 17)); @@ -45,7 +45,7 @@ public void CanCreateALightWeightTagFromAbbreviatedSha() [Test] public void CanCreateALightweightTagFromABranchName() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("i_am_lightweight", "refs/heads/master"); @@ -57,7 +57,7 @@ public void CanCreateALightweightTagFromABranchName() [Test] public void CanCreateAndOverwriteALightweightTag() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("e90810b", commitE90810BSha, true); @@ -69,7 +69,7 @@ public void CanCreateAndOverwriteALightweightTag() [Test] public void CanCreateATagWithNameContainingASlash() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string lwTagName = "i/am/deep"; @@ -90,9 +90,9 @@ public void CanCreateATagWithNameContainingASlash() } [Test] - public void CreatingATagWithNameMatchingAnAlreadyExistingReferenceHierarchyThows() + public void CreatingATagWithNameMatchingAnAlreadyExistingReferenceHierarchyThrows() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { repo.ApplyTag("i/am/deep"); @@ -104,7 +104,7 @@ public void CreatingATagWithNameMatchingAnAlreadyExistingReferenceHierarchyThows [Test] public void CanCreateAnAnnotatedTagFromABranchName() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("unit_test", "refs/heads/master", signatureTim, "a new tag"); @@ -116,7 +116,7 @@ public void CanCreateAnAnnotatedTagFromABranchName() [Test] public void CanCreateAnAnnotatedTagFromSha() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("unit_test", tagTestSha, signatureTim, "a new tag"); @@ -129,7 +129,7 @@ public void CanCreateAnAnnotatedTagFromSha() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L359)")] public void CanCreateAnAnnotatedTagWithAnEmptyMessage() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.ApplyTag("empty-annotated-tag", signatureNtk, string.Empty); @@ -142,7 +142,7 @@ public void CanCreateAnAnnotatedTagWithAnEmptyMessage() [Test] public void CanCreateAndOverwriteAnAnnotatedTag() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create("e90810b", tagTestSha, signatureTim, "a new tag", true); @@ -157,7 +157,7 @@ public void CreatingAnAnnotatedTagIsDeterministic() const string tagName = "nullTAGen"; const string tagMessage = "I've been tagged!"; - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag newTag = repo.Tags.Create(tagName, commitE90810BSha, signatureNtk, tagMessage); @@ -172,14 +172,12 @@ public void CreatingAnAnnotatedTagIsDeterministic() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L32)")] public void CreatingATagInAEmptyRepositoryThrows() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); - using (var repo = new Repository(dir)) - { - Assert.Throws(() => repo.ApplyTag("mynotag")); - } + using (var repo = new Repository(dir)) + { + Assert.Throws(() => repo.ApplyTag("mynotag")); } } @@ -187,23 +185,20 @@ public void CreatingATagInAEmptyRepositoryThrows() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L37)")] public void CreatingATagForHeadInAEmptyRepositoryThrows() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); - using (var repo = new Repository(dir)) - { - Assert.Throws(() => repo.ApplyTag("mytaghead", "HEAD")); - } + using (var repo = new Repository(dir)) + { + Assert.Throws(() => repo.ApplyTag("mytaghead", "HEAD")); } } [Test] [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L42)")] - public void CreatingATagForAnUnknowReferenceShouldFail() + public void CreatingATagForAnUnknowReferenceThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.ApplyTag("mytagnorev", "aaaaaaaaaaa")); } @@ -211,10 +206,9 @@ public void CreatingATagForAnUnknowReferenceShouldFail() [Test] [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L42)")] - public void CreatingATagForAnUnknowObjectIdShouldFail() + public void CreatingATagForAnUnknowObjectIdThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.ApplyTag("mytagnorev", Constants.UnknownSha)); } @@ -224,7 +218,7 @@ public void CreatingATagForAnUnknowObjectIdShouldFail() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L48)")] public void CanCreateATagForImplicitHead() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag tag = repo.ApplyTag("mytag"); @@ -239,9 +233,9 @@ public void CanCreateATagForImplicitHead() [Test] [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L87)")] - public void CreatingADuplicateTagShouldFail() + public void CreatingADuplicateTagThrows() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { repo.ApplyTag("mytag"); @@ -254,8 +248,7 @@ public void CreatingADuplicateTagShouldFail() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L90)")] public void CreatingATagWithANonValidNameShouldFail() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.ApplyTag("")); Assert.Throws(() => repo.ApplyTag(".othertag")); @@ -269,7 +262,7 @@ public void CreatingATagWithANonValidNameShouldFail() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L101)")] public void CanCreateATagUsingHead() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag tag = repo.ApplyTag("mytag", "HEAD"); @@ -285,7 +278,7 @@ public void CanCreateATagUsingHead() [Test] public void CanCreateATagPointingToATree() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Commit headCommit = repo.Head.Tip; @@ -304,7 +297,7 @@ public void CanCreateATagPointingToATree() [Test] public void CanCreateATagPointingToABlob() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Commit headCommit = repo.Head.Tip; @@ -323,7 +316,7 @@ public void CanCreateATagPointingToABlob() [Test] public void CreatingALightweightTagPointingToATagAnnotationGeneratesAnAnnotatedTagReusingThePointedAtTagAnnotation() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag annotatedTag = repo.Tags["e90810b"]; @@ -343,7 +336,7 @@ public void CreatingALightweightTagPointingToATagAnnotationGeneratesAnAnnotatedT [Test] public void CanCreateAnAnnotatedTagPointingToATagAnnotation() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { Tag annotatedTag = repo.Tags["e90810b"]; @@ -362,8 +355,7 @@ public void CanCreateAnAnnotatedTagPointingToATagAnnotation() [Test] public void BlindlyCreatingALightweightTagOverAnExistingOneThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.Tags.Create("e90810b", "refs/heads/br2")); } @@ -372,8 +364,7 @@ public void BlindlyCreatingALightweightTagOverAnExistingOneThrows() [Test] public void BlindlyCreatingAnAnnotatedTagOverAnExistingOneThrows() { - using (var path = new TemporaryCloneOfTestRepo()) - using (var repo = new Repository(path.RepositoryPath)) + using (var repo = new Repository(Constants.BareTestRepoPath)) { Assert.Throws(() => repo.Tags.Create("e90810b", "refs/heads/br2", signatureNtk, "a nice message")); } @@ -454,7 +445,7 @@ public void CreateTagWithNullTargetThrows() [Test] public void CanDeleteATagThroughItsName() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { repo.Tags.Delete("e90810b"); @@ -464,7 +455,7 @@ public void CanDeleteATagThroughItsName() [Test] public void CanDeleteATagThroughItsCanonicalName() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { repo.Tags.Delete("refs/tags/e90810b"); @@ -474,7 +465,7 @@ public void CanDeleteATagThroughItsCanonicalName() [Test] public void ADeletedTagCannotBeLookedUp() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string tagName = "e90810b"; @@ -487,7 +478,7 @@ public void ADeletedTagCannotBeLookedUp() [Test] public void DeletingATagDecreasesTheTagsCount() { - using (var path = new TemporaryCloneOfTestRepo()) + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(); using (var repo = new Repository(path.RepositoryPath)) { const string tagName = "e90810b"; @@ -529,15 +520,13 @@ public void CanListTags() [Description("Ported from cgit (https://github.com/git/git/blob/1c08bf50cfcf924094eca56c2486a90e2bf1e6e2/t/t7004-tag.sh#L24)")] public void CanListAllTagsInAEmptyRepository() { - using (var scd = new SelfCleaningDirectory()) - { - string dir = Repository.Init(scd.DirectoryPath); + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); - using (var repo = new Repository(dir)) - { - repo.Info.IsEmpty.ShouldBeTrue(); - repo.Tags.Count().ShouldEqual(0); - } + using (var repo = new Repository(dir)) + { + repo.Info.IsEmpty.ShouldBeTrue(); + repo.Tags.Count().ShouldEqual(0); } } diff --git a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs index f4fa93e28..b69602789 100644 --- a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs +++ b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs @@ -1,9 +1,13 @@ -using System.IO; +using System.Collections.Generic; +using System.IO; +using NUnit.Framework; namespace LibGit2Sharp.Tests.TestHelpers { - public class BaseFixture + public class BaseFixture : IPostTestDirectoryRemover { + private readonly List directories = new List(); + static BaseFixture() { // Do the set up in the static ctor so it only happens once @@ -35,5 +39,39 @@ protected void CreateCorruptedDeadBeefHead(string repoPath) string headPath = string.Format("{0}refs/heads/{1}", repoPath, deadbeef); File.WriteAllText(headPath, string.Format("{0}{0}{0}{0}{0}\n", deadbeef)); } + + protected SelfCleaningDirectory BuildSelfCleaningDirectory() + { + return new SelfCleaningDirectory(this); + } + + protected SelfCleaningDirectory BuildSelfCleaningDirectory(string path) + { + return new SelfCleaningDirectory(this, path); + } + + protected TemporaryCloneOfTestRepo BuildTemporaryCloneOfTestRepo() + { + return BuildTemporaryCloneOfTestRepo(Constants.BareTestRepoPath); + } + + protected TemporaryCloneOfTestRepo BuildTemporaryCloneOfTestRepo(string path) + { + return new TemporaryCloneOfTestRepo(this, path); + } + + public void Register(string directoryPath) + { + directories.Add(directoryPath); + } + + [TestFixtureTearDown] + public void Cleanup() + { + foreach (string directory in directories) + { + DirectoryHelper.DeleteDirectory(directory); + } + } } } diff --git a/LibGit2Sharp.Tests/TestHelpers/IPostTestDirectoryRemover.cs b/LibGit2Sharp.Tests/TestHelpers/IPostTestDirectoryRemover.cs new file mode 100644 index 000000000..733676248 --- /dev/null +++ b/LibGit2Sharp.Tests/TestHelpers/IPostTestDirectoryRemover.cs @@ -0,0 +1,7 @@ +namespace LibGit2Sharp.Tests.TestHelpers +{ + public interface IPostTestDirectoryRemover + { + void Register(string directoryPath); + } +} diff --git a/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs b/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs index cadbdfb1f..1c292cbb3 100644 --- a/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs +++ b/LibGit2Sharp.Tests/TestHelpers/SelfCleaningDirectory.cs @@ -3,13 +3,14 @@ namespace LibGit2Sharp.Tests.TestHelpers { - public class SelfCleaningDirectory : IDisposable + public class SelfCleaningDirectory { - public SelfCleaningDirectory() : this(BuildTempPath()) + public SelfCleaningDirectory(IPostTestDirectoryRemover directoryRemover) + : this(directoryRemover, BuildTempPath()) { } - public SelfCleaningDirectory(string path) + public SelfCleaningDirectory(IPostTestDirectoryRemover directoryRemover, string path) { if (Directory.Exists(path)) { @@ -18,25 +19,13 @@ public SelfCleaningDirectory(string path) DirectoryPath = path; RootedDirectoryPath = Path.GetFullPath(path); + + directoryRemover.Register(DirectoryPath); } public string DirectoryPath { get; private set; } public string RootedDirectoryPath { get; private set; } - #region IDisposable Members - - public void Dispose() - { - if (!Directory.Exists(DirectoryPath)) - { - throw new InvalidOperationException(string.Format("Directory '{0}' doesn't exist any longer.", DirectoryPath)); - } - - DirectoryHelper.DeleteDirectory(DirectoryPath); - } - - #endregion - protected static string BuildTempPath() { return Path.Combine(Constants.TemporaryReposPath, Guid.NewGuid().ToString().Substring(0, 8)); diff --git a/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs b/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs index 0e237dd72..72d319d81 100644 --- a/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs +++ b/LibGit2Sharp.Tests/TestHelpers/TemporaryCloneOfTestRepo.cs @@ -4,7 +4,8 @@ namespace LibGit2Sharp.Tests.TestHelpers { public class TemporaryCloneOfTestRepo : SelfCleaningDirectory { - public TemporaryCloneOfTestRepo(string sourceDirectoryPath = Constants.BareTestRepoPath) + public TemporaryCloneOfTestRepo(IPostTestDirectoryRemover directoryRemover, string sourceDirectoryPath) + : base(directoryRemover) { var source = new DirectoryInfo(sourceDirectoryPath); diff --git a/LibGit2Sharp/BranchCollection.cs b/LibGit2Sharp/BranchCollection.cs index e387f7e2e..54e1cd589 100644 --- a/LibGit2Sharp/BranchCollection.cs +++ b/LibGit2Sharp/BranchCollection.cs @@ -100,7 +100,7 @@ public void Delete(string name) { Ensure.ArgumentNotNullOrEmptyString(name, "name"); - var canonicalName = NormalizeToCanonicalName(name); + string canonicalName = NormalizeToCanonicalName(name); if (canonicalName == repo.Head.CanonicalName) { From 83735193fffbbd31ab3eb205ed6b814d6a1a76e7 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 20 Sep 2011 15:50:33 +0200 Subject: [PATCH 17/28] Upgrade libgit2 binaries to 35e9407 --- Lib/git2.dll | Bin 253952 -> 264192 bytes Lib/git2.pdb | Bin 0 -> 1585152 bytes LibGit2Sharp.Tests/CommitFixture.cs | 3 +-- LibGit2Sharp/Commit.cs | 16 ++++++++++++---- LibGit2Sharp/CommitCollection.cs | 4 +++- LibGit2Sharp/Core/NativeMethods.cs | 6 ++++-- LibGit2Sharp/Signature.cs | 11 ++++++++++- libgit2 | 2 +- 8 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 Lib/git2.pdb diff --git a/Lib/git2.dll b/Lib/git2.dll index 0e2378d9b2781a05929d90e6a998723f3d34a356..79943a7ea4bd131703224af09b1af7fb51670091 100644 GIT binary patch literal 264192 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 |J66przf^V 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 z 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೾a+v@2ue*gHNb(^pkS%_bab6w_58fP!Nfw6UYrkCTcziL ziyqad<=_+KYBv6^jr#Rp`;qA-&wM(l?#7u_KJPUd{s%Z$BaWkDlH^SSn3)>^~fJ<9|6C`vhoo)H^0Qs zF?&!2p@y&mIx@KH6$Z^wmj+>gA;wVQ50wo$Wg67$==>a(^$Iwg3zrCCNr;MuW5lmZ z*_=whrjuveA~7 zGJ>ogBgW{uJ|WP#er+!b&ZsI!bhkU8l#4om!x9qgLlJ@C@k1`mv_Qt;ie+@Rp5*5P z*#3*|V5Wk&^n#1-*6$ia%&C>?r3}Oq%Ll0L_7OiAK`NxyI;}k2TrQ0CZwJGvgy2!5 zc`$v{9ujA%U@!9*>y1*d>jf{U#mZi0v`f7STfts?db0Nic7#{Mu5jwDCG^pDVs)4$ zSap;C6CAS;Z^O?=^H~ie{M1Q|6*NjU608ujJ0DzyzRa_Yun2IMSvUC+R<0Kt8pBD*bd;kLo?63{Z=xKoIkhnYW_&B(=&`n(qo zy%gR()hkpol_*_;ZK^~!e1FS+R>d6kx3Rkoki~7!@O9Otw>+c`QIwkAm=)WmEC=bh z58V)z>04-?LPY9yh-K)NBL1m;JXQG z)g2xxutE$}3Rw3FxQ>rvLq~&DeDr6$&w?jnNi{{p zlN&=UO?fln;9KRJWWRab%>&{KJjF|v<1l4K<(S3A@ShwIPe;f2F9)KEj9_X4NyIUk zaJ@z^{H3+p_XAY zAxPw_TwF;p^Jsl#h(?E14;)F=gBPgQfS1_IAXmRm`x%5C`C_vF3wdHDi?PeB$_9CQw!#w(*R#0HV^pGquImrVuW$Z7D<$W$2oX zuF)fg3T9OU+v@d^tsgr+I7qCP?2dobXL>o>^??Xb9_Z=H9;)(0^9A-|TX1n_UsaZ6 z*j?7=2o+u-_=R_?RgJ^2^krUB7qcp2_#P)FBkwpi)Y1ig!w1gw^^1APby|rM_)D)-X`f-S*X5bP`mR3{ zaJ~LTtmLZ$LVvF6IMFM;Zl89IaH} zl{4U>#I;tqTw!dOW+Cn2JPe0uLl``Uf9bMfHtZC-)X*oGziF0LY)oiv7b{#p)I>T9 zg>+tRC%JsJsW(!JQ)R;D%HEyrpB!>G(l zW?X-T2$2jQKv9IRqMXXh0;0M;=_!E1%_ynUXZiBtDy|IQWVNG{2~kG@xSr1WRU;!w zcF0aLGy_xEVLLfvbuNcx2T%FLnJ{2zE$N&uU!0U!?uXM4Hd8oUGUB+BZKsNy?K_7~ z>s&r-+Fa*Up#W&~>YPVygR(~%b>7X87crKILi%xRA)Q4jtpU+A?NWvl>?_JJqoWCi zf!uAmJamPo)ax7bQF+VBz7PdzM7GP9MFE`)U=W>-zL>l!hqqtnz?i6P=c^Gcg-Hsj zRprG#+Q>FG1ou6HQt~18ZH22m?N<7!)2b9!7i}+lRrhf)6q!@yDx(~T?yakN`~7R%PW@r|j2GWN+fv^enEhz^ z)y>Z?D|w(}(O*v=b~WbT7nAs2dEdp0?~u-aIl$U<$X?-?Z!60^mAUZup8J>l^5`i` zdiL9~cmK71z_Dd7#y@lZ*%xmsfAqJL-#Pr!2N@lEp8NOm5MyPZ$$G>^14^jYxR_Yw{c z5BGn5$~n`|cRy-o82W#EQQ6e-N|Be(cekZNL9CSpWR}H@>*N?=z=f z{(0KlJ43%b9Jg|Ohe_J>Y`;g69v%46O9Pg!9dpNW>rcx|ejIb(;y<08v1}RM<}mDd zs;hpwY0>BZ`IEloKYAwSx_xJ@>*u^8eR=S`t*(Obj;lV|xmRA@u2YLndT8TTmQWq>z@W8hGkwk$w-4__Zni`6uFPramm4IrfxwW9jEHH+;RnZ`r&#i_X2i#8rF$?d3!N z+;>^UitFC~`eaIL@P`k)Z+qjeKP;*Ia92mir+YU|*}LPK-*4KwF!ajAL=lBZB*QUJAwz={O-iLf?j{Avsp{d}MA^Spll|LfQGdb{>o>srHJYp=EU+56gStrIde zU(F3xiS6n^D9sslVpX?kC65b-?3>QkKiGNglIzPgj^BEAsNw#Meh=@d-@JZf-iXIH z-+$TvAS5d7Zr>~2kI$Ys;P9u~#J$mpBM<4-d8sal3G4Ff5>GkETU}23*9Otj&_e$& zH-3ft*;Yh!PkP)b@9lMsDz`MnF=hJ|IDP|y^FMc=Tq*|m)NhHvH7O;0*I7w>XPDJ))MmbRh7AZPwq zow89{#?`JjVw#ecTQ&H(R}~KHR#(ibD$X&;PES*skfT3GuYg#4@0;1)HRa3#AD_fJ zgNTS<4~14YH)wiY*<_Nw>WOadVne&4e80qkN}rndzFzH3j|I4MqH4$&GQx?d!v4>YugZo7Q+LIVZofN%4O%-^{t} zoPpatxeVQvmPa)+)9Q`4l~uD(Xq?SsJ2oBdw=_Sy)79+Eu4=?(Z+mK$?IQngQI}k6 z6Wx4{9?^}++k9J?xnQ+sc9u&{RgHGR<@49S)xKU){_Uf8m49sSy5#VhVmHg&bms}4 zI-1>k8tZns8^bnPYh`SaAKomg^QxQCU#;9DkX<=ub77X;Nd<#h1FSm4oe4zK0}=9)C&}4nJgX!i?8f>uqkTqxhlJb@cvB z`*ATfqGW1A%H*Gob;MZl(J;qWtZnbJBR73UZ7t zek)d6P+q9z?9+0$VuRhLZy1psQ&g;zd2R<+$1Uf{{VOMHe-ZKBfMb})5 zmv=wg^uVL3;mpeXvW8pP)t_FJsuXU|G&mGqLtSUuU^@3ra`>fP_Axi2^?kk!GqtO& zW!41cshph^;8yQuBx-be)>tIJrK~_dI4hkpATM`tN#WV2Uvq1kxtAMnPj9ZTC=D-2 zZT2eqL!g#hG>e_SbFYcP(D%A3<}^FgK5>aul>@ag_8%+5$1>CGrX?2n1dOTrR^Fwq z_WI@G%U?6os~(Ng$=;)GoO$p@rS>E)g9O5t38}+9mc18b6I6p zHT|Z+W&f@jnP%gTW;3$tkM^ys&QpHfm@;X1nP_BGmVLzVJlCo9OdW24ikfkln~CZW zkx=_-a(?z!`_iRB`dM2Bnr0k(R9gOFV`k+m|C;8L#tn7V$7)Nv{iw{>5T<1eNGZw^ z9yY0r`J!7M%CoB*F)guqVsW_Wev?t}bu(RI!f`wK``gu2UX_(A7tP32oZH=5sbp+d&856+U2e}^tx?ZRlh%(px=d^8ka97oYa-lenqx;NFw_>{1`Dzt-{6ampuzN$zNK~|0lI! z;Khk%100?Fji(RHGcx+4&QQ0}q~D+eNv3^kjtsGz{A2KxPJ%&A22;#VC+r`(=EBEe zyEn0hpUhkn^ZB{wl)?#p;{KrDk2UDOB5{cG*o4^kJ>qTG-kO?pe_@LA!O^q2t7^>b z=U*{nOMGhbiasNfF6AjsYrb@D`rcus5%X--Udgy96ao(Gt3H#=6@nmGZ z@=^Fc*xSoCdQ#-@-M*>%=Cy~We17z{V&CKHt#MDh_w(z*tA9SH1(!Ti(wO#?J!(Kh z7sID-$8Xs5+OKKyo2QS5*WXz1=0yf`=c{Ahp)cQ+bZtI={o0QW5vzX|D7*g}s@3b8 z{&P9=g+K0co(S%hew-|1Hcs81K|4!%ds)nF~+XwG7+?-uxc1v-KerJAIbGj-e{xRw(b?wY+jcX|83o})GM=zdK ztFa_>QN_~N>r*rCeIBuBj)UUDV&iiQ76h(IJE7@0r*3bb)N6O|&vv`KB0XT+*tuN2 z9`iL~Z_UfAd|a^lh~f6Dia|TRMs3+SBk5J)Xq~}(baqAW?tgCgF1^|B^M}8pZ%c5W zy2VO(XzQ85U-BBQxf^#h&)B?v_3=%Wac7F3_f$S`Jm2!*!YgwQb-s6{h_|oHe*Z2G z``kr~_J$Z$9rd->J)-={wS>AZ>+pe$n$omK2FLDB@;dQ`k#n5v|Dxd1l0_HPcD&tF ztmCoTe<|%<4eP#dc>lxfs`U+n4xG(!R-GC6=vcJee7UNU6Sqe_xD)n)p7`+5c&z}> zT#ueE-zZz_yX9(qoAPDXhzlpDKir*vKG<3{cItrWt5;%X?Ovs;r)~EA&=%o_O1=35 z>nnPVSQ@u!m*Kg+7e`K073`tqO}wx~uQ-_3sgjsq6v}oP-r4u{>c{UU%$>jbnZ>pF z^F#+8aUXa&FRc&`q9@MNdiwH7qUSh`J8vvQPK^Ds@yn2RXL48Dn^KItoIN%?{uJ#n zYlZ5^^E2};Z|R-<5jmzZ*L=t!+QE&cy?Rs zDco*+a9MBajn5kwhE*hV>$3gQu3D8@$I~aDR=ysSH|bChgSrVN1x@^ix{h<7mtA|5 zni8rxynK4Ned6g&T{OzihwO_Rd|uJdF|VZhV@|ZqvR^lTq__mV)o0xu?=+wn z54St@Ia2X{+v|tRe=aN;W*6LJt($zzz}H9Z-%Y6*?s$=s`t_dsbK8J*dBX6o=hJTV z2w|Rz?UIpP&hmL$=u+!#`O9rg|D5_yaSIj|c5h&H|6(~uas5C+sY%}#{j8GQ|JYOY zXwjv;-gMr<32!D{d*;43#bxBJp09sJ^yB%f+0DQE`~~g8oFz+QZfLLrrxCf0TfC*#^4O_)Ka_?KcIYu`%*Q>A2}ZPR?F|`8$A{$f zu3l|8`eIYkutNKjC*_*2Zw;~vGnkb9IhkYXygEDA=fivBXG%T8ohGMLeOz+Q|M{zf zHNNAPsFkr^6i=(RBSK31l~%r_K3uSLd;rDo>un>&4Pk4JZ9ArN=ak$DX4HY*u4<~f zYsSR({x$gOR_%Gy55?D>?{cMDYx(x$yG-r0d$Nrawx&)EI(J7)ZrbFZg%z=DFUDOm zdcVbEWVT*I0cUsfBCi-^o37z(BtbN+2TjT8H?W3zg%exk7Chqj!Saz6mE=4Z&XTiE> zf9RU1GxL~HV-1$%cMqCZHs!8hXifA`hr>5kzMHM6wyLgV-*g9!&3%UL)3+B~w>Fy) z_5JjxdoQ+S1&{4pu=nz`tDWOl`W+5>udGx<_Wwi`O7>e#zoCDqjXk0gd8TJfSkuxM z0b9*C1g_ewd2azN`F_ckN4H+|S$(~Ff!aaGAu0Q29D813rn2lr@2uX3v;xES8h&Uz zJjFi!xK&NByEkV>K6v`7>1OfRv>S8Jca6vy9~i#@sSs0c)>ALYtpUBR!=ttPl@F#JiRtr@#e_u8grYsb}9}xFW&xbL{Uz}y`vXz z?<)OjNxKvA#P*^0)cdzJDt2D8m@uH4vTJM&!M#v5HuXfMU-y0onu^EoKVw{RWYr%f z$F_DEBww<@S80Ljxz5!^`_x~U43C~M-!sHf`;=erod<)=EE4WpEt9)9MLFlXVQIrH zEz>Fc<}Oq|Sll=F#M7%^!3_Tg zy&vk{HFH>eV@Bimn~ox1IWoB9b0Zwz^) zb$6Oq@Pkp8zaD-Vz2tbq*B*zCTTkA*FvP}-KkMa8tg)kCzt!}UtAiL)~kQ? z^}KN*kC~S{C$2iGK2pI*zWZT!r2)gw9^oA?I;K8o$N{hA-uuH8%c_3m7gttLhgNS` zG_j_z_u9a+y{`j4444|Wd7XUZicag)lnY*IGKH}!!E==ekFKjujGFVfWLmfB`-T*D zKB&)LetpT>XSa@P%(&lhNd4Z!e)Dczzxn>=;}Ibb_J8SnH!W)R@$OeX9Ud?-dT(N_ z-l36+3sk-8esu|p2~y@=(w0;AUMkw~>x+M3s9*T68{H!+Z1XxjPO8$l{&tLFnj1%9 ze_4L;0Kdw~-9I~oj&u@4CEhE%7B;H-w%2{jhw4GBJG^%VrG>6FM>m`uSyVBLQvB=1 zv11<$E*&Y$aNWOxVsc>fwj-5Hr7Km+E8J>41{+rgpV%KXZP*#VQ6)Yh`tqjHLslM8 zKh8ScdC5jErHA@v@(r0}|L>_!wW2Zo=L|7(JslWvR&i!xlkIq~{CUn++2=1*XQ*B) zJL>SQp+4hDQ+4^SV&~4qg(*%O(#)33&oQVNRi-o6wc1!KsVU}$UxU^1VTD!htm3+E z206u5N@?lYbM$j2tR)Kc_L_aWSHLV^QH%IBwR(oF82EfV?o6z;IG%Y79cetA$rOmirQ8eV8<>eZmGqBc~= zfF1eJj@fw5N2TaZjN6o^a1rIGY2)Wj)UtyM4YH;#Q^{lW$SwV@nVxy1e?d($zo>y7 z*O>e(tls{()mirWUE`v=i*=GIris zjebX)96M#_FYTI{ebxIip=Mh}wU7GdzbLWR_0o}}K5m=yB6JsI3U6m+Yp$-T%5gb= zxj_4M?YHY6zm>0u^{?^{Pp<22=~i4b!8tv*yQYq37hU6?ChVBI7RFX4F3b3j=6HdiOjY@S+C#6^3Pot3V-FTbbQ z4Sp<23>hv={=_t~Kh#@IKVDJC)O@sS>4$OlnfsGPH8GP@8mQ0f8h`$5E<16nGHb@= z@;r;Q4Cc2rSt>{OmAWNu&lhocX*r{fatb=B6@R;^Ram~jx53BRt|>w@vRZg0zD#p* zqnD2LODkjfQxP$z?j%~Ju4Yz^Tw+$IypfeCXa@){FR@ovu_oul)gA* zkhy&wwI+Nn9spblPkwVF#(viqAN}ZBJJVr7HO$&sXI1j>^FP3;QDh`v)c8!lplk~z zJu7%{Zr*^WXA4W3YjVHdZoJH`sBfO0S`c3PN0C=^QLdU`XF7Y^_<|?}H`im#=sL@Te+1b5FL;sDqit>g)4jE~Fo| zTBu;`W7mrvp+eOao*AU6IXBojXGDryfr5MTx08>6*Y{|BmU3Qo<)oCx z*CRz`yCdwgqNcj$4d?1G>y6b^3RF$p!nB2=A=&xKPnVY3Z{3omA9O6kbl`{b(nqf< zGdG@WuJNy~YcTFsT6;_*zw*a`j5MJzt0*O=(&TVxx$c({b#}ao&56_Qi^7Y~rg$~I zbyZ`1wr3}ls1@$psFV9HLwK3K!lYUJj$f`UjHQr%GfLj>_yiTT?e~?-%U&sF&L~oH z?mkzu>)4Vm*LX`cR?ofN*}b7wt=HE;)jKO(J8dxQr0zY^!eGGWnBGq>j_kWBu}`1L zy$9I(>*t(b+WQ7<(~5J<(&c+~>-Ljk+`VMUv>wx* zIRr=zJ#m(<*?A^EnhG%U7dfDJI+GhMZ}!c!;`gcX0-X;(@ch5fgIK2 zL^@^Ft^Kqc;V9D<# zDK_(?+23lSzAbwZUOX=%Eb;Zk5b8Mj&_=eo|DIW@0g<{wzacw=Ccii}R@nK4@0d|pQOnW*_L#biFDE8Z@hFxB7+A#jj~`*H31`JbyJHvDo|F8J0!H@|`0rkGnq>YTgq(;nYm|So&~(?xF`D`(3}! z8vU#)yz`yg1wjor8}1yuWmYu1(tnHMwY;nJ8+9>Z*G+o)oSpPj>&&{91JB(xO*yY; z=}_h|{_^Qn{O_l3%-M8OyM9%<)1K{@mY&VMaB=#%i|X3%FWacZUzrzaU2*b8udDKh z&9e4nTP}MlV0Ce3W`NxAgp%4Jo@T*0H;0um6_3 zF{e1%nm5I2dvsXE5=M)Pgl6*(D(Uzl^c3h)DPSgw{*nbbB4QAr;WUrN82ONTXJDy zCth%I(R`wExC=XU^=seGb0@reZ1HUMe9^r5*B)>m9jI99?3G9#Bz*Z)Yu-4|#3z<- z?r3}&dm`lBkS`nUSLdGbGNPD1-r(Up%OU#H`H!kAZdvBfjQnv@&pfwsOs4UnA-UOl zX9t?j$~)3LvZuV2;S8;&rOUV5*MDBy&C|koyU>%`d)dK-8$aLZmQWG4>(cfv$7iY3 zDxaR5J}EEedYwU!Lrn!G6C8CP@~@RWpBtKz`e=IjaLv<+_Tl9kT{gw-3pwwncz$qo zNuHxkbk4^gH-0U98|0EQ{w_;j^YB2YgG!czw(M;1mo5^mSzo=0AIBkEp?R~|OpUWSr0QS)0lTkwV1mt@|b1q z7NsBaPW5mYJbcf`F{5Zk35^*Ww6k-D98WS_UEMpW>Eh^<_JzZ)H_M$2vkKb!IeU_U zvneOpCpUZbGvoIkoWgr5eXL5E{M`TA65pDGugcVxjGI>cf)zs8RafExz=DU=mz03< zOO0-S^;;9RK~V({08YrAy0iO06jN7K&9!&zm^E9k4*qp$`aJC}=WFAaYgJz{-F19B zyQj8Y>ed9~JLiI?PM#*G6K2vlUwcQg7n8U7WXE^Ls5Z2iqO`C1_yIJ5pE$6}M+uv7=58@R^aYaQ~T0Z*NcNeLK2#^Q`*9G?9qb8WWxcBMw*x;;fm-iO*jqiMQTF_y?l{HGr z@6r8#Z@+8ccMbfmf!{Uoy9WN(Y5>zSOBU}IFRTm0zL@0L(BP1GLn?=3ZbqX}DTbp& zeo6+o_Z)e`!rFwzn>2(ulLw!bYY5X58^I8$QDV?O~f5q=r@cfo!T7y$P! zNV2}?0Xw)~BR(veRVRTyaIZuDFl<&$0Rp)1BY%DD!)8}?7~G|hnqUbS1NRSU`;UcN z8^@m}ZT~57QxRT<^vUx2fqrmrf|LWZffd}35l)t80_X|%a%uY~!_9&Fy0rbVRIBP> zxQigk@-74paDPC2vOTfBpQ2=odhe`su(1?iYwprsoX|;Qm9}{xjg_ z!(Ayv z#3$R|2lR$}t+f4T!fgTfJ!$(#!fgikQAiDt37p{mj`(Ez|6Tt-FKzz-=omvkAClBh z1J-aqM|`sVCjx!AS4-P}I@~s zYJ@Vr%~2xM2}P_Eu0UvDrEpC`jzEcjZ~s57fzT-O>p^lZQ1K^3;zf64htlyL6;n~Q zeD@;@Yk&XSRs-ubOV@+<$2W@7`(w=4g&9Sq8OXxP+hRjAGuc#{m;)ftEIP;x(>%1^ z3X`|Tk>nhY(uD9)Rm*L)WO`lP6Z}=W68&}sljR$SFP-t3wKyMXx-E&wbR>bTGcCyc z6Ynx`wrzdA9N0GCXn@ko!mbWZVSzcr=-SO80e|q@q ziN9X>)5o6y{(9rj5`X{O8(B?lk%zl2xXR%8TftQlEz$~xUbIgu*d?^Ib#Qr5Q|_ds zuGm>YLtazv&m*TSPg!2FJY;Fh(!^CAtxur+CEzM6zV*Y^2JIpFh7xxMI4>mNt_ou| zftHd0@gHqu`N*=7`IB2`TE?5QJ!7X48iosOy5omx+-~_G!Gq4*(f;XTySPy)_17HD;ftjEg zbj1;Ll~W^DK(2svg>;3y0eJ(G4oQdH54j&Q4l)k15wa0d9a0@~5#%Ds(U7Ad%OT4l zhd>U2+zGi8G8{4-@)hJONPS3s$hDAbAtypkguDlN50VGTgFFg(6mmM`bja_J-yz9S zPz7>6*Z>m{2)Y3`zyR?;0V$*bYj7GEgUuiSJOSiLt0g{*m5{cQ`0CgVvNJFM@<0cW z_piNxGUyI8K_4Iow1FDv3CKTPpaFUV1<)0!1AU+ZdH_OBUO`b&Nl6)-3N}^grY7Aw zb=cH9Y@PpM)A)x?^FQ3W{D+(Ps;1MmYd37V*t$!%9@0&(!`8FI*6SZO{eRdD{==>J zf4GU;Ur8D5uBO(hle#+DoMe-c%|ceKmUPpWZaUJft8^plt?fqEVcShspE4<{SDEZk zy?=6csO~>G|DpPO{ZsXm*M9PzMRq?x-lvfFD6)GKvS*U_A>_RWo@}6x66o6m`Y3^Z zNnpGnFeYG4M1Ut!7()n*8wAD>0^G-%}9 z=dBeFg|_j=y4#MMfJPhVFa{4pC7Ud+Y(}EC`Yu+IT4>RcE=to*$9bH%95Nl*G=Ob& z?44cP>9~(`6ldO6N9HF>M?9lmn+G;+b)9V8?42c5)pG1&eR8%KOuS4!zmgqa+j!*Z z>W)X(MA$YwM%^b0~)5kFrd*IOc&ycf@fhhkl4A1yPQ9SXSf8tr7$mw*k8k}q_ zAdiJiQ+nPxqr7&G&UikKO*VF6BG*82aTM{mB0K*&EWgn9m@)TZ+pbNJ^Swn!`AQGR zmmFlpOHBRUx@6*G9PuZ8aharP`9}w0M*Y88*Gw9p)M*<>QY&%)<@`J9|2ZvR@pMT4 zR1Qfx65YQ@Loze#KOBoR4Y6+9G-O@;pUNQ9Ya5qbx#=&nmDV4*3{zWu@$ld)86N&R zBDAG(+v>JWgB&LQDXwfN>3H7wi-O6q{jVFn!#N|?m6RUm@zek;xFC5HOzJt~RS?D| zYjTKoALHsi!qs}5!wAVmpsj0+vzvn*UbQ)yx!PKd6RQ*A^&}C`+TPZBw6nW-Tyh$1 zg>E?B!410PHqO>XJgT{madakE2zMFh>>|sL+_!TWBOZO6(A!9Tr_t8p#fT-^NZZ*( zoRZr(D{E50*@f)nl7UCs>B(q>3$k~Sj*Xblm9VjOw3S^?#R~u8pJ6{EW0U>^1`>qn z5W;NOa0-=1XP7ftY>qUNpML;MfPzCp!@?sXqoQM`#Ky%>O-M{i#=BNxlJDey5k6xk z-iQ8Q-hTa?Tg&f0HEG07>YX(-yZn7B{}BFv`SAZadpS8g)BoG;Uxoc`q&5Nnod5sB z8se)vjz3%^iZR0~E(y}R4e@QO^vXOnCOFnldK)61-WGFkn~^u&ftUzVT6ef(AlElA zliZq0JTcc`QnFd=y#(po-X+mX`mUf=2}oDRpUtG7^!An9{kOOHj|y5ROBJ-pbboKZ zYv6Ycw6B42t~Rbqn{@gZOc#te(&Oh)<1^|r$Y)(PTyLA$=otU#ByXo=L)or$5_fN@ zG>eQ&2=ESw^a~f6iI>*&9w&-05L?bE5S14dh=(xRe1#h1b;mog9t5F{mtj7T zpCMm&BZzYd->QpuY+dnw4tmC59sK7*PK94NbUh$f01^Cy;l2SW2QDDqbi_Z4Fek7K zdEC<`h*6Mni2n=phC2>=4e+yu&OOL&h^q&GD(Hv!n?V@-`ho(4??TzO!!Hl<*CMVP z{H{RGh2K(OgEDwR>O#K>VPoJng8UBm9O(5&KEr`Ncmcf$2)mB7<{`gwxJN;bgl-M; z8H)W+*xv$ag}5~6=|E>b_IF_a3(}5)w1(~k=sbpQ7q~}*pGbEPY@J(;rNt=aEE^e{2YK1!k@w~4}NNh=LPp#uo&)h2-g51 zi1z^Ld1C(w@@j^@Dbmvh_n}*e@Oto5c z|2*Wk3;RKU4_zMomP2PExQqCqNUIK|X;02p@tpnTWFi`?b)U0+|Yu zkk%=L9RimSj{?8lfQopXpr?g&-XPC!(9?w9JNQ*X_cr#wVLuqU2N3oZX_tXC=pQ5Z z5#Al~PJ$5ZDA;0U+^o&&k-C^w*iQD7p71Swzz*aVJ%YoHD^ zgKjqz2oqod#)Dum3#ZKO7IdW+(LQ4FklNN zfkdzj6o9kf0cZqWZYvOGz!ppf)4@uR4~~Ee@C^I_-KrFbfq)A}gGnF(WP*Hf7~BAF zL8m(kL_fd=o*)4%0o%Yya1S&AjcU{b-~ne401`k3*Z@kv74Q^%1zql<4ge20gCH;+ zECL%qDYysTfbT&4o&sS6%z-WN0HI(OSPHg)Q{X=M3cB7`Acg`f;0dC^Jg^EBf(zgY z_zrX)pzgp(Fa+m0`SeF-`Ab?KOKguj!%j*QHfUO63u4l0n6%<0EqF=mUD9&5H>|As z5{9sAG=lAx3G538z$R`GF&LJbLtrgx28+qzu+*T!vXc(0FLPK}vS1Oyfu$x7)}j`$ zm=wZ_!wMFn*02<_g{9_5Jauw_#ph^PojSqt(ixT`V__lc3d=EfSZaE}!fXO8J}1KJ z)CZQAzOVrCgGFfoEX+i(>Te z4lC7}u+*GIq{2pX4(!mbD05~!^NWw6m)4jaamu$9b)Eng07 zF4w@Oa2;$PH^8p~fV7Imfww2pp3%DINnmb^VxC^$Dg|N-r3!Ba&*f<`5ZRJ7O z`jx;&^9XDXOJOT{9JY5SVH;Wo`?oX1Sy-u_CoaI&^Ac=c#J}MKu{OFd_IzQp?(ZvE z62dnqHab#bi(pA*{&g^EVqi(7wF!*%OO!qXywVIMzP{1OgWWDuNr2dPp+iFCa>#$-XRs-sgGP!(^I74X_qsD_m zgMG2goNv1p>EQ1h9fc1c!rL5xIGSVy!PYFqo@6?{vIs55B@K!S^bN*|;uq0c)Yg!= zWGsan*)as4OZWwZbj&)4Jht`+fi=c_{iCBJI;xWXF!}f^Z*o9E#K@ z1_l37Ys4mWf9?ru0k%AB^w2$4_eo8lNj)SB?X?W!?RtXlaOeVKbayva1d0 zFZDyuB9oF#4JZ3Yq2DLvLdB`@_S zt#Mi^tW~{DGqrlQYvNY#cGXCFw>jy>B_PKzyf-IJ0Nd4(cnC|B1xQC9GKRR5w5?6j z!&hSc(R!vx6=f$$+lrB#$}Oi&XrM3bC87g@BI8?*6@CGcF)h_gI%AUCI!R?&yCIak z<-i?8M=zBAFTA2!j}uX&$c$PJ2Oi`=(INTx=#GPJ%YwtQ`v&qdE<2<@1xmga3=Q}T z4e3QxdhWNzBv*14U-+ao-x@+L_J|5=DRY~U=;-jNtq0Q@K(4wdtJ_vzvdDkRw_W#b z)g?OwndzVOac4s&E~~)S82BPFIwGN^ceMtPm##K9J?#VH#VaAp8m%=<>i?(g+n(Og zj))G%O&EEB>TpSD7xt(7!gisNalvg4vo%GOxlQkF7X?Al5p658C04uZp)^k03xm{4 z+^3}Hv(!t{OJx0qybi^SaIY#hz-z4^u`j*~jUt!X?cg0GiVp~hixCC19*$VOeg0xE z^77i+gkrCVmeEa`cl(n_tP>>)j*bt-C!`&6AlGgEi;SnnU_cZ3#)rnlb%+2vu2vr` zaUY7$WRuCG#qDX!n1T;^Wg+Ci=O6ddt!#Co-CEbZiV(5d4e6x4R>06N_B;xJ_NR1wnUanoNR$!-#`p|Qr%Y1wyoXjOO}@QCtZ9<-O?x$ z6WjK`h-7}UQCa%a6&D!4*jT^hc6CKwGsQP&(p+$>EWJut(xiR7)k}Qo>hNp1O=tu; zp;e-Y{NK`=WN`c6UZhX!U{1Qoi-fG2WNu&a!mKTaNqTqqIZJxA?dGH#1h?MMNqle* z-!65@=-l>~rC6`c?Ox0B*Wx=MSuK!1N83C!XxC-Lzf~n;IZbjq)LL>fo+PMsZD3jZ zw~5!`8qh98e3)&^AxW=IEw*OTu1Z?H+g^KG({4B7i@n>YDK?0}4SlkZ@u$PbXIknbT~Am2giK{i0% z(NWNP3z-Bd(|--OA>6MZ-)Spoy@V`Q+1C!xNwm>fhEpOlk90BR;;?rsuZ$DW< zE59qD6*37@kI>@7&BC;t6vz^7Ld#I<){;tTvh75Du7Xz12BZmN`#yl2fhc4Pz7K{! zsfbw$#eU>|j?@pP7I@R!ep|O6>41}#3R=q`7lTv~4U8Hfj-fDKf^7kra_6Py8CK>J$$@43d*SsvZj^Mv@DF6 zZa@)4z;6t&0~BBgw7^U7KfPt3-d2J&;)*hPHHG8Fa)N60R+Gv zxPeI^3?zVgU^!R^wt*6G23!Sq!Bg-Kd;^MTD;;16xWFEGfw>*4Z#nwXP*JK1o&JItG?LzSuo7DAyg|dPO~p(8NO1Ys-I8-rI9618Dsw{-+;0ARrL|mC8yr$ z=uL1G97TQ!e^MvxWOab!x57k5$S~Q-FD@LG*kn1a$@zk!#Fa!=P_RNvOS?tOnx7br zS$u3A>9k>_r6O!6$>-!Sk&4CCx6uUJH5jk=WKIuPny*ZAkrJs1n|CGI+Z_B(k@v-W zohZb6qJ;V)Z5D_MB}}XY+XPsrlY5akd5JShk&-}StrF4~MJ2!_1 z0CoqkC09oJqzM8sTI?GYO74Fqa}5Z=8Kg>vi+693>EoRkLF`ltjf=wzc@eP*dwvm7 zQzHp|<@o4`=tNO0p@np!VsL=*L4=`_Z(?M4U}!8cN!~Yze22xvk90*zo+xy<5;;`` z4uiNNJ`OU+2BkP@Y%>Ml2+Yh99*Rht#W~?sCvgOONr9oToWz$1^1i{5q){R?`awGy z$w{5WIR)RyaH(U8B3}B6wW^e)i4!vrm$U?k3&Q(TveOacQQE0d5us6N;Y!q3KnSLL zB9@8u&|;`rV`z|XHu1dy_7FWF5oc|MSeHCX3VdTD$-M$a--NgTSzh}{m#k8VGvbor zm8x$X;p95rdK{HPk(?h4gorByZ>8dio@j6KYjzQgM9`y%z4EZo3ysGq97*hJ-S-s{ zXXSkTU^YNn1))}`a=yOSF)^M2G2}o4b@WOyLAnToJ-L%oJ$W>8;WoW#+1wTeuP#kCzyTvULqrP!w*N}CiQ ziiwBe5m}$H46$V^`r}LVJMu7GqQ&XLde=tO*8LiN8Tpa9hyrbsFppDIu!ty9bdA8r z|HO;7q1NQ&W3d>UrAov}MK@GOXcXR9k)xG(q`HA|QBnpnHIxX0g0v!tt>jqr_rVGd zarj19TuCnE8{nvT%v@`OlN`g9WIU1%fYxZHI3izREIA*PizpW6GMK76Kx8eM@rzhN zjva2H0pVf~d^gl)#E>N9fHUV*8((Sh;hjvzm0VxkaMoJIk>fYHN4!8giZ2(0g}Ark zwKH)EEkK@M)8CmQ=t+2KS5>M(%EQW^5zO z+J_61A9)3{FiIB183_d%o%rNrj*Vfsnj zUrOEZi4|djFql~fy5QCW7l2?{b9jU{9);@snyaOvD9 z+^^hKye<6w{Lg$Pi$xZ1EZhZC1-k|31=WHNg8stM!u3LOQs*s5cRrA|6L964(_8#%iE2tSgaE8@#NygQ@xqzs|>Q)(y- zsx>u`8cRJyJxlFGn?OsUt)vyuF3|eW$I{QxztB|}Ll~9}JBBmEosr2n&N$ETGmkd^ z!+fWCt@&8yQKl+uAIpgy$6n9g!+yec~Aqwq65N9BiDZMDhl))4}C6JOxF{09`_SA{g4C+nlBWfeHJMA*<2JJ4b2c1D5 zL0?BNpqJ8b((lmk(;v}aG6tjU3FevR9Hu>U95WqDS|4COU~004vc|CjSqE4ptWwrV z%pkahQ^dKT}Jxwm60mUJ`FTZzr#eSIv9Gd(L~y`^aPPt#Ll+Sq!wG2+Rdn z1h)lsf=0nlfvIqm&{^m%3=~EQ)Akn2c}eA>=6|DU&E)DKn`DsWvoM zT0CtIZ3nHMrcV#0KcmMob~5VBo6W~C7c+C2x0x@Q$}C+Lk7dKkXBD#^vp%qTu@yPX zIEOe(x%#|v-d$b;Pm9mt3;2HgWBl{{Tl{Vo#uhdf<1BVt9JKg_8XYH?CJ93Bsv_+Nt&TpMag4z;cQl`F zo^QU_{IGc)&e<>KYRsO@0_GX!cjg#YD60?0nv=k37h0rv{`9(OJ80Pic`%z|g}%%ZDcgkZH`zo1FbM;IzR zO&%2{5fGm$L>Gz=We%l`a-MF*sAhPZ??TF<%r30stP8BsYzJ_RJ`i3>#gFcBaqDLU@k&F+F z&gKJfW}P;_V*b|Lkm-jrYb!I56^GV3hxU5I`oxlBYqJg5M(qCR)7Hqjh||E);&$f_ z;wExubF;Y5xy@V!o*L@Tf#=L~=S}4K@j`jgyaZktKZ*a8|AEi4u*JCZ8J`_13&I6Q z1r(vRaH4RQa1D9Pd+}}@LW$CcGLT|M38UOUh1=={;Y}#VlGW6~o znmJuS55ak+%NWP-V=QM>F%&T#y)^ekf2e1^X1-%KF>kV-u$0){*w@)_*#kLtoH))t zjy>0tdyVVG%jA9Gx$~Ftukv5;zwwnVA_Z#%I|Su|yMp(EZbE&bk#L9bh_F)lLP$<* zPqw!lMVaD9nL$}hIZ4T-zNP-4PNprOJ)?D^@1P%`SJCCn6U{f{yh>uuVxGkr{|290 zE3#BsomqzLQg$DXDKDOv#@mXPzsY;d8)=a&I4clgY&b+7dnM*}fY71zqpYWVr}V{$ z=1yHe&BS=-OiQKhrtP3Vq?{^;8Rel)+Df7s%&#Y^-bfnd5|lb}fONbp?nR?sXMEp!q76cUdxKMC@6p=45z zP%lxRVf5)l8%|@=ENC{g(WvnWw5_xQw41cYw4-zpt}mMAi_N#2e=v{35pr2EtOqO) z_B?hE)b3tRF!v$150A;SL#xl?>?ihLb@PkuUo1^+d_5ohCSi%k{}EM8cA z#|W=47$o2c?9sDB1lLivpXk~4LQmmp;ddeNPV$4si?WweLHR@prVgR2GV~aZjCG7} zxcW>oZ!%Y4nlNe1^UN2_uB?8n0j%k)RE&RT(CTsQb?lF9LtOc2Tt~EdBzGD&o>#&< zkG?UK@4=7d7xJ(0uk+I_PFq|+{p1Ut30?{mgMgSUF-s%5Jkf*FpAt-&N;yP1OHrrx zqRyZ$##r{0`i*LWHgTn`!gY;BcfhCoCXAVkZ44jt)#e*9uBkAsn08DjW&(3A^D@qU z50*bGm=%eh>&QOOzQ^|9_@P`;oO;ejeERRtjl$Kyf+w)(CNLJ*U}Rk_*ecKz_Q8nn zgEJBZF_aUJ@w${@6l=;#$^(iQu1xQ!^J&?%A#{8CWO^(;6X$&~u1gJcWkw%HfAgW{ zcIGJWOdb@R616GmGrv;;ws!%P8^F+PuSn$ib-<2W@8BN&bDLNB7%(;Mkq z7|$4H%v#)k3`egBVBKd;Vozt!Wv^hrWPf3sa0YXXxP!S2E}Pqgvmk}HfVUhi@_?t# z*TZ$3%^%61#$U`2!h_a_yMdkjUU4%34v!nu8m`3uK2fOU<hq|b#P`b+-=`N0{6@t$*bzu)KiJl{LBhmHY-`~g0D z1%BR#D?WlxJB1MpHF=RR;~;o^ znEAT7$(&}DSihsQ=z4mK7O<^s6SQcR^QH5Rv)EnZ?r~e(R4HY$vQ!SJb%$C2CElg) z>jhpAD?-p~V*~30o8fnzd`s~86Uf_8-B{yULm0)zE~A(EqFHTTHrHCa>CqT=xz-B2f;Li{u`8R!&tV zDqnZ?;;|zeyxxKG!25wO0++(d4?paLQ#^2%6S1=c}dKznt1|!pa(_D*+h_RBa zptZ|7WHnfX&Zf)hC$x_4p@--_>IZ?Dj3b*&X2qFmDhJ|}m{Mj5XTt21i1j_@3B zt~V*L7>NWo*wP87lEAykGO~*7H%=R8&F{>S)+6l1LHY)(U~No*)2Gqy07;10PNpsZxCwwSm1p4ozbN8G5PrgV!(Mi}r^R-S;9{NODj^|1tYo?^;K# zGe~7mQh{C=OIJWiH_$r!FqrMWO?U}E%Uk(L(ao9UoOH6>zq)BM8wsIB_E8hmB6U!m zQ{D7aI?l`V{^)&#>)Z!NO-I7Qg%bQY-38~MLCX@2=Zw9^ICGlW*-EgI(SfNJL83}S z3LH%r(B1R^jbpvoI5q(;dVqb!nouW6b_(`uu-#_&<)8Z!MfGCJKeqRetEk+%XZa0wZQHS)I)T(9-+r#B|p~Zz&(C1 z4i1wIk6GxIdHYcFxMAXN&xKJWjtoVrno3rXKa(va#)vnD8~IR@D&uR=*=-}ke8qg* z+-hzIjcl@ZSU*{LbTzG}XX$nNYt;QDR>nSJ$Jkx=h^5)tb`>hE(LRrC?gOor@+$r@ zKgOH5p~kEC)do<|ZZL2Q*zBR|sS|W6?mAPCK?a`%KVGM|AblOz7m#WHjTKMy`gpE4 z#LM>zy*b{8-gfUGGUIIzsT?nZ^5aAxoB>BH5+Ipi0(YWmzY=08y2H$=}GX@aC^Mn2vYi9n9dw$m3%>erxiTH-#%xlBRk}OJ zO{AGzAT6YoTq8G0h}?tXx8azj2qV&nGNO%GqX%{_!ALezj8uad6dI}wS6)FjFeF_ zTE@yAGF~RgWSJsUC6QDLsboKyCevl6%#t}WSLVrlSs*9MLRp0LGh3F(Qn>{5RW2*! zN?9qZWHpFoGgzz^xoD@{E9*go4ba~j8&GyixeLC=35oJkkC>Jweh)7Re(MNiivfrd5&};;ZiX+yAR;UoFnu!+&q!jmSSK z!dH(o@bG&G8rNp@K#CBiFNE{r!r#4te`85J2t1WgOa#-QojJHx0V%}QN-)_fM*^$D z6@#P>Ds%)2)PyH#CApY-79k@pZ=ZPujShbkRzE8f$tcIlwepbE3NR-rw2Hv*v#kni zrB!2X#yqiOn%D}~y=jH4d+_5nq{;{yNuy{qjYZCm$3!`qrqEPMK*EA5%uv&4Iw&Fw zzMV_+K*t4iA}ypvv=|IlLQClqkXSjbpey0&RdA&mx|s%PE!b=)-An7~5!yf-=_%So zo9PAGf@$?N%&SA7wg<>kJ{G|uSrm(AvFNCHmVlm0L9WCaJ^p#T0*_bV@d`X%f%X;n EFAcPj+W-In literal 253952 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

li#j4eYD5;3T(p)wgU5|r)m6jmPW79`{?f-N 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 IFM;T5H$k?U3(nk&@}vi5lx>C zM$=@VAs$VpUW$_e#O%K&VuotU@V*6f+rEK?2*TSoe@G@0amIzVkCqeDnUg>3hu z^wd24j`=W6s6QYW4x~z{Ug3+~^4}(i1>_=`dc9r!b*W|gZ(}PmMEtn*jW5e$O^z`{ zTIEVOQSwy`%eBA_qD{vwZu-jHTSp9=p@Htd_=fPs+H|n@K75p#_mXo37TA}QuqyL7 z@s48viPUGW6I452G9v-%O`0zMq^tm;ECyKkD!_QB!s9Vgynz9Z5L;|n>MKW}K)?cx zK-kzTKIEAGN?JKS@TFK_?-Eew_OUC(&>g019bIL(23R}7Jwf5SaVt#qgXN7CoWkrb2z@%TAxE~sjO z#`lz}KHzW->_H*?|HjAO{ktfHoE4S0;>4{O{vfsVT~lfq3muq`rDAOV<2yN3xxbTiE4s^pZfu$n(f-U&9==iwBcw9?b zNB?QV+elnh^kU^c`GRHBEfD5GYE3#*84A}-VzkIE*AVSuH_OLz<<<6VvGy(1V6(h9 zgl|p{)V|mz=oB2b)gP$74rwHw>n%~H&p{N^25^0^kkw%l%>%Q@7cJE{$F;Nplt)2Y z^frhC(nJ{(zP|o28bh}>#2TY~WVOM&BIq$xLxYFIXT!{5EAEvA?5L54eW9vWSoFX! z6Dc4J|IpNR?r@`h;GK1yKg?st&?oHPQ$Xv~!SSdFnlb^Mq8JAG`jkGPEcd9vKV}}_6y$gZ^r=pt5B>0+Cw!)leWr6#%Ue)eWS_v% zgj9VBF{Fc*O|y!ij%Z1MW?-_^0_`O0gx@-TLFBZ)9hLuN9JX(9SFfq9{_y6$E)BZl z7MC+H`5YcdP8Ng+nSppU3@7y|@&Q<%VtK)$7-}Hh7X63thIk@% z3kLEoXsEXu0yjl?GTTL&l)7D{fP$#Dzit|7r(mQVPUcoQTNARdso!)^-b)!1stREg zT$MPF!44#|?HYA(ovu%@Z{1(V6#aVM{U=yY(U0#n?VLauY1+oS z19RG0IQ&0cVUn707TJHL13@1t9Xd4F;%vpK!1A9Yh{oq}IB;3*56DRgG1~VDpEA~v z!N1US@Msr6ziI;!yIXscS7B`>+b2DqRwEbX!kxT_i;#vOLN7Ef z7GLx{naHzfP@ZWru5Rl$Rqa-nW{ouR!7kmG8~-9}34>ov@vrgoi?$PdftMlCmXTT( z`i{S&MA11_j624ZDEJZ+*Q}6YquV3C_?E6LGZw;+L_5u0R4gU?U^r#RVoEYBZywTy zz8LB`+oCyR&;Q?>c+WKi%1LkVNA;%Sk~?rcFqxSh`5xh;?P4`==4@;i|;J<6lV8_2^Jm-dl&l z28#JZztu$)FKKE*(4yT%m$BtcRU2q&a%(vtBy~G2P`EEf5EajF0QuT&e>zf zP`Q0*`)N}<{4iiUesFyh(WZw0}?*mmMaY!~sVEcd*^`OCD|;18{Gr*gO8T!p{@0uQ1G z_THvJz~bV2d=jSs!TO6~kbaG;T(qaaRl%PJ`6!5VxAqR%Twj$&WF*qT^@kg3KpKVG z&L2=lup>cav2?fJC=)X5pc zf)m0?0ZFg7OLuVAP9ia6NW;($w9flaQ^(&7qV;HR;~dbV?ZsaJj{tl;9p_gA@)i~c zHSY-B6dM_p#e--{b?7VB%_B`+H79XlKnF!azuC|hi6k0oDLk$*m^d7`HJop!y-px; zxZz1Uc)+2TXQ)qcB|)O#@`~37KW!g*&A^)*x12qeg=&kn+{^=+5mVkN@AdE2_8MyD z{SVi`i_3Yf~ zMtpik|HR)~Ar?fmNAyqc9WmNI!M{XQVn|3ZCS3bJ2!9Fq|Nqv1Mxy^#Gq%XuBmgon z%-lx`;YN$JOG40B~(MyJH^ctL05IirwT-LmzE}G`N!F76NU;!s;BNWxA>i1r? z{xW!2ky~2?$WNfs9QtU`vH>;9f*sT8_e$-ndJO~p&BT|1{>pRA$4xfwX+<+R znCqV!FxeubmU0pgjP%>^3X;#o`%fvWULZKpe@O4YkM|$mQXJ%0Ao>xGig2weXg{IM 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 diff --git a/Lib/git2.pdb b/Lib/git2.pdb new file mode 100644 index 0000000000000000000000000000000000000000..9a43b5e717174998a264743321e9188025bf9fc3 GIT binary patch literal 1585152 zcmeEvd3;>Ok$=w{$(D_524jN(V}vnaz!=*&#^Ep?Nh5i%q!A;H4?-Bm(#RH;G-4$A zN&w}81agvtgk+OV*kp4pIW`H|+y}|#WD_8SusO)h<{%gnazNns{dQNq*E1R!vVZOG z^U?4zdR<*rU0qdOeZGF3gMH=FSZQFqspXuOv(9Sj>}hK{Z`JD6^X4Ak+GFrb7!%;n zOJc^nbT$FTya>-TzZnh8XkbPIGa8uDz>EfFG%%xq84b*6U`7Ko8ko_*j0XO{(!lvo zJ^k!{*KIOicy^dGSTh=!(ZGxbW;8IPff)_VXkbPIGa8uDz>EfFG%%xq84dhj(m;bT zo1XP{ep772lmC~5pOIxo12YEfFG%%xqXQhER ztXdPhXyJ>yX5q-fYyP-k>5><0Z2r`-Ppv%V&LduU6kz9!6o!jq=A4efkv-{=fs%b0 zpbi;aG$0Xwd@n$sna3aA8<=kz5+~bq%mhf!#sA~{J88@U6I&1m8uKUcHzxSwcs3?( z>IHw6;Lis>-$OWB{*iZ*s1T?@aOZ@$4T;gJa*vQaEtmPV%AF^?<_rE(Q@_ZVNfzz> z#)nOAe0b9)bBJ|H2<|6Le8Id$apUSRKAayb_L;{XJ*2QY1K9B3h!1NZY&Dh|Sj^JC-XiN0}@n*xGGVK2&jvhX?{GS{OF_0uN6m*F4% zhq5_a*PBy_54z<-*H%-8@!jQOp+72C1*r{J|2j>0HXnxP@XkI~t&(8{Fsj=M;diF^ z>*+`v1F6VCeC`au>WnY|j5-bABWGG%;v3UInrE%kSYi}3G4P_ER)P=XfcnqbNV7ds zr~J!yy^1)%J*NtnHmJs3Be-h?cU4VY!SaRi_3H-DU2AgDv+8+WRXMcna{!C%9GLY| z&Uu2ntY$eZ#^m^a<^5d2|FP)Y)p2Y*-(TFT@!({XS7!hl94Yy*S%eLj`io*4#^naW zMurfTjg2pa%_VGNuwQ8jYb0z}1Y@}g!pbbz#he9zEhKDg@Sv8#wz-(F!ua5D(Un11 z6Jf)ZuoZ;$IT-bE1dMk9>Z`xi$oKU@+f2oY>``qS-$$zLu~F=CvFH~uCc%D1{VW;6 zg9M)&kwYBTIS^lL^>E^7*Yr!`jCwfjf^$htd*^$*^DW7aj^<>`mVByfYdV|h%5Oav z6{(#OwZ*jXJ#$*V-I+{>W5g%*r!7KPJJ#7^J5tH6Tz9@bo5^*HBt9sTp;LINo~Z-= zqu*1Pv!SUBanKgK1-EuA$|qZT(_53hX;i-@)76{W-iwl_0;96C!moC`tWaONtEV^F z)sm{xs)8e)y;b$eAzfXct;9inwh8WBQ@>yt>gxPPo@0zv?s;kO=%F@gyE{N*Oh;*C zSKGu0{2slsZG)Ftcz3ZpHaIq392wVk_&f(M5AH3Dvwf|Ht)bW8atkLfw)+bwMmW~$ zKYP5eYop0kBwgK>O8J!2n6{z9t}(;0#q%wnF|*3dVvL@31=7|0dTa2z5&Qy5Vtg;{ z&ZaZjbnlM*=5+gJ!~9t7{H{#4GueUq5GSaO(~;R`Y<|3Ue!6RGvLoGU(7()H1eXgK zbFYN_6_!_#%(itk;ZV=R6}s6<8^A0szI9lAbeBp)&Q4uOH<*^8Vqs)rw7p!K7$ar!8xV6uA z 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

~oZ@v4pEMdBqy05oW-U5Fi?%kp?PE_(k4o?h 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%0DRa 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 Q)eX|JnGUd{&HfhS+`+8d0 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 commit.Message.ShouldEqual("testing\n"); - commit.MessageShort.ShouldEqual("testing"); commit.Sha.ShouldEqual(sha); } } @@ -324,7 +323,7 @@ public void CanReadCommitData() var commit = (Commit)obj; commit.Message.ShouldEqual("testing\n"); - commit.MessageShort.ShouldEqual("testing"); + commit.Encoding.ShouldEqual("UTF-8"); commit.Sha.ShouldEqual(sha); commit.Author.ShouldNotBeNull(); diff --git a/LibGit2Sharp/Commit.cs b/LibGit2Sharp/Commit.cs index 8ec4e4ae3..994eea114 100644 --- a/LibGit2Sharp/Commit.cs +++ b/LibGit2Sharp/Commit.cs @@ -14,7 +14,8 @@ public class Commit : GitObject private readonly Lazy> parents; private readonly Lazy tree; - internal Commit(ObjectId id, ObjectId treeId, Repository repo) : base(id) + internal Commit(ObjectId id, ObjectId treeId, Repository repo) + : base(id) { tree = new Lazy(() => repo.Lookup(treeId)); parents = new Lazy>(() => RetrieveParentsOfCommit(id.Oid)); @@ -27,9 +28,9 @@ internal Commit(ObjectId id, ObjectId treeId, Repository repo) : base(id) public string Message { get; private set; } ///

- /// Gets the short commit message which is usually the first line of the commit. + /// Gets the encoding of the message. /// - public string MessageShort { get; private set; } + public string Encoding { get; private set; } /// /// Gets the author of this commit. @@ -93,10 +94,17 @@ internal static Commit BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) return new Commit(id, treeId, repo) { Message = NativeMethods.git_commit_message(obj).MarshallAsString(), - MessageShort = NativeMethods.git_commit_message_short(obj).MarshallAsString(), + Encoding = RetrieveEncodingOf(obj), Author = new Signature(NativeMethods.git_commit_author(obj)), Committer = new Signature(NativeMethods.git_commit_committer(obj)), }; } + + private static string RetrieveEncodingOf(IntPtr obj) + { + string encoding = NativeMethods.git_commit_message_encoding(obj).MarshallAsString(); + + return encoding ?? "UTF-8"; + } } } diff --git a/LibGit2Sharp/CommitCollection.cs b/LibGit2Sharp/CommitCollection.cs index 9eebdd85a..02a6e995d 100644 --- a/LibGit2Sharp/CommitCollection.cs +++ b/LibGit2Sharp/CommitCollection.cs @@ -134,6 +134,8 @@ public Commit Create(Signature author, Signature committer, string message) { GitOid treeOid; int res = NativeMethods.git_tree_create_fromindex(out treeOid, repo.Index.Handle); + string encoding = null; + Ensure.Success(res); Reference head = repo.Refs["HEAD"]; @@ -144,7 +146,7 @@ public Commit Create(Signature author, Signature committer, string message) { IntPtr[] parentPtrs = BuildArrayFrom(headPtr); res = NativeMethods.git_commit_create(out commitOid, repo.Handle, head.CanonicalName, author.Handle, - committer.Handle, message, treePtr.ObjectPtr, parentPtrs.Count(), parentPtrs); + committer.Handle, encoding, message, treePtr.ObjectPtr, parentPtrs.Count(), parentPtrs); } Ensure.Success(res); diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 4f1c7dfe4..e2a4134dd 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -26,6 +26,7 @@ public static extern int git_commit_create( [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string updateRef, GitSignature author, GitSignature committer, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string encoding, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string message, IntPtr tree, int parentCount, @@ -35,7 +36,7 @@ public static extern int git_commit_create( public static extern IntPtr git_commit_message(IntPtr commit); [DllImport(libgit2)] - public static extern IntPtr git_commit_message_short(IntPtr commit); + public static extern IntPtr git_commit_message_encoding(IntPtr commit); [DllImport(libgit2)] public static extern int git_commit_parent(out IntPtr parentCommit, IntPtr commit, uint n); @@ -223,7 +224,8 @@ public static extern int git_repository_open( public static extern void git_signature_free(IntPtr signature); [DllImport(libgit2)] - public static extern IntPtr git_signature_new( + public static extern int git_signature_new( + out IntPtr signature, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string email, long time, diff --git a/LibGit2Sharp/Signature.cs b/LibGit2Sharp/Signature.cs index a9ede163e..fe4867405 100644 --- a/LibGit2Sharp/Signature.cs +++ b/LibGit2Sharp/Signature.cs @@ -28,10 +28,19 @@ internal Signature(IntPtr signaturePtr, bool ownedByRepo = true) /// The email. /// The when. public Signature(string name, string email, DateTimeOffset when) - : this(NativeMethods.git_signature_new(name, email, when.ToSecondsSinceEpoch(), (int)when.Offset.TotalMinutes), false) + : this(CreateSignature(name, email, when), false) { } + private static IntPtr CreateSignature(string name, string email, DateTimeOffset when) + { + IntPtr signature; + int result = NativeMethods.git_signature_new(out signature, name, email, when.ToSecondsSinceEpoch(), (int)when.Offset.TotalMinutes); + Ensure.Success(result); + + return signature; + } + internal GitSignature Handle { get { return handle; } diff --git a/libgit2 b/libgit2 index 33afca47c..35e9407c4 160000 --- a/libgit2 +++ b/libgit2 @@ -1 +1 @@ -Subproject commit 33afca47cbacd0ad6fe4115f29f3e7b58428bc70 +Subproject commit 35e9407c4698080b29f2bcb3d379454bb0ae62bb From 189f85aafd91d97bbd5c06ce40ee6de6d867dc6c Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 27 Sep 2011 11:47:39 +0200 Subject: [PATCH 18/28] Upgrade NuGet to v1.5 - Make the packaging depend on the build success - Add the libgit2 .pdb file to the package Should fix issue #63. --- Lib/NuGet/NuGet.exe | Bin 342528 -> 525312 bytes build.libgit2sharp.cmd | 10 +++++++--- nuget.package/LibGit2Sharp.nuspec | 1 + nuget.package/build.nuget.package.cmd | 22 +++++++++++++++++----- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Lib/NuGet/NuGet.exe b/Lib/NuGet/NuGet.exe index 3bf120c38b7ddfc0b80c29bd3f45846bfae9cb6b..c3960af621dceffd2f8a38b0026c650fddc758b2 100644 GIT binary patch literal 525312 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

e6=Qylsw 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 literal 342528 zcmb@v34C2u)%SmT?#;RPo+O3agrqb;%h0e*pcG_C0zwOd$|y2eP?14UR6KBR0c}VO zDk8|FsEEi^Kt-Gt6%}z-P_*jf<5=<02YnQA;&GPp|NhoG=iZw(;d$Qo{pZu(v(DOk zuf6u#Yp=cbc#b;xny3^-QJMcwJP}2oKy`EIZ@0SG*!yyX^Ecmo?6R#j>+svFz!`9JlP8>_um;=iWn!pKf>Y03bif>R9{&H%@eh2sox z9O~yd0~`nQjx)e<)R5y0a9pLp8Q?fX@9_+9T&=(v;5f9);~C(%?gD23xW1LOXo9Ey z;;>B=CH;XirsF#qf^3sO`O=9+tq5^2?4tyY#DM}NBT=+~!u=1lwwjZcVRKr&|7%)( zbJ8+wPOIKYt2^3N1>`Rd)Jz(e0{kX%IUwsK9temiiI+X`#1pR$Xc-0a^7KY4JXt&4 zfTy$MU4bf?Gr6TlMz~pr`(GtW`L!Q`r-&x7ZVMmWkJc^3Irm!{Tk!Wb;w$TC<0v)M0srxjIClyl4 z_8>ube^2vgDzIYV$u~XdThemC?T1qFSH|(!R7_ z8I&|eE&2H6Do3R{K{ZC?a$}K8PgRX#w6A+ncb;zJ3yCruXhLaNNq&nxzn*%}fEQzZ zy=SmN<2$!rnMQHT6Z}N|o08q&qls3hGs0SsG9%8`I`5jN3FD+@7 z3fuBCPQ<9*wS0n9(QpG4G8sdq`^)8pgiETOb)_YA3y}2CHQoUU73Qr-Mv7t>* zJW)!rao`fF6fL0g>5UeQu2}FwgtTC2WpA_z3<9pl;kQH^zlYbZ^NF_rHR{inz*aXR zSH<;I2bS)CV|6e?C(_=5zVg@~gXjM#aZJ@Hg=H%mQ5@-i%&Sq;~8jqvl zQJf*7w4j#l!plgs?^cm1Vz%5~WrI+~@<`vxg;6(RMV|Hkw0RQ>++8V6k-A)&)UR2S zap_{X6D}Ot9EQp|CsEmy+$^=nx~A$CM$vtgYjlFT*qn2tSg>CWRR3sSxjHD*J8Fr> zXGl~{tUW>amVz)sqG&{}mnU8zy4H^NXiFa*9&p~)*SowORi|k+t!A_@f@(em9%qEL zAes518Fh6wBW#@8{zcIj$c&a;ZzAM0EoGRrG~11z?tz}Mn+U8_ZzFs`Z*2or>MA*y z?M{Tg@&L^&BZ^wiJJu?=FR7_s(+R0S&6>uD}RZ-(dYfc$#6+Eo_qaTLwTL z9GdJn1008ua-0E6UKU+9ZtqmLO5D{hQq+M_*B11OR&E< zJe{C%ibaL30*u2m6!#W>M&gXRNk+W>yQ6c7gi>S2RP!5XqMdb&T4MP}O@K+j?2fKg z3|u196ScMON`o3acPK*vQ*7NqD1B5Js7j0kdS|UtRKniWf0F_xBmI^?GNTQ7xeXu| zI1HKN3~(HF&2a`e4&&xH101)kz!?B;Iu84jV`-wBm&QSG+8l$ib$Ca|i<3V3`fn3N zi>^1$BRGx25d=8jNCtW69rSTLlIDG7B#GFQ?l>F;Chv9vy+ztniNmqr1~x6|t=5_Y zT~ShPel(`kbgAYk#DV6JWc%|PhXWKfn;@ZhOsDZ8%0n60bUanY^>Q^lmpF*K9ks73 z4#$AB-mZU4#d1UwPa}sB!c@;gD+jHN)C~39CM90d#cU}uE2AQ{=wbf7!Q4hG*dMzN!6b_j59T+7hAw3Z#pZ>b#Ch)Z-lDh>9P zJHv2;4urkI?y6bx-S69ol10^V_21PDwN8Ihnb?^ZmsU8mZ8u~FO-@+BjPBCQNJkn+ z$3#cGBN8Ee$nI!&o(PdxV`Nn-XLTwgZN2sJ*1fQtRMaw1+we>tg}nM!rqMnk#9!Qa zs3jj7PO6re#*K%!M4J4Y=t_&uzHzB}B=6yQs>CSzlxa-bJQ~~-jV3ob_?@Hnauj$A z45wQH+5*PVb=&~>>08ODm?!mKk0*B{xL@kv4r4qiLXAJeT=r~`G+&x)>P94KqMGTH zl6b+0;IY;x*&=Ag;cQ|Q@m|`B*Igmr^9fRmOxIT|a`Q!` z=&9xb8;HCS+a3*j^1<-NR&qRyJeC^W`kLoe4KIV@Mv~A|sBSXM1Af22#?A|(bF0~z z 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 iH=0<*k;rkh0B~1dB{38 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

S3xS5Kj2Bb@*Bm8!HTe?f! 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 NPu1&xbygdJzXNr*QfvSK diff --git a/build.libgit2sharp.cmd b/build.libgit2sharp.cmd index b39022dc7..bca19e16a 100644 --- a/build.libgit2sharp.cmd +++ b/build.libgit2sharp.cmd @@ -1,7 +1,11 @@ +SETLOCAL + SET BASEDIR=%~dp0 -set FrameworkVersion=v4.0.30319 -set FrameworkDir=%SystemRoot%\Microsoft.NET\Framework +SET FrameworkVersion=v4.0.30319 +SET FrameworkDir=%SystemRoot%\Microsoft.NET\Framework "%FrameworkDir%\%FrameworkVersion%\msbuild.exe" "%BASEDIR%CI-build.msbuild" -exit /B %ERRORLEVEL% \ No newline at end of file +ENDLOCAL + +EXIT /B %ERRORLEVEL% \ No newline at end of file diff --git a/nuget.package/LibGit2Sharp.nuspec b/nuget.package/LibGit2Sharp.nuspec index ccb3f8c6b..29fac7f25 100644 --- a/nuget.package/LibGit2Sharp.nuspec +++ b/nuget.package/LibGit2Sharp.nuspec @@ -13,6 +13,7 @@ + diff --git a/nuget.package/build.nuget.package.cmd b/nuget.package/build.nuget.package.cmd index f4a708d39..0a498a317 100644 --- a/nuget.package/build.nuget.package.cmd +++ b/nuget.package/build.nuget.package.cmd @@ -1,13 +1,25 @@ +SETLOCAL SET BASEDIR=%~dp0 SET SRCDIR=%BASEDIR%..\LibGit2Sharp\ REM the nuspec file needs to be next to the csproj, so copy it there during the pack operation -copy "%BASEDIR%LibGit2Sharp.nuspec" "%SRCDIR%" +COPY "%BASEDIR%LibGit2Sharp.nuspec" "%SRCDIR%" -pushd "%BASEDIR%" +PUSHD "%BASEDIR%" -..\Lib\NuGet\NuGet.exe pack -sym "%SRCDIR%LibGit2Sharp.csproj" +DEL *.nupkg -popd +CMD /c "..\build.libgit2sharp.cmd" -del "%SRCDIR%LibGit2Sharp.nuspec" +IF %ERRORLEVEL% NEQ 0 GOTO EXIT + +"..\Lib\NuGet\NuGet.exe" Pack -Symbols "%SRCDIR%LibGit2Sharp.csproj" -Prop Configuration=Release + +:EXIT +DEL "%SRCDIR%LibGit2Sharp.nuspec" + +ENDLOCAL +POPD + +PAUSE +EXIT /B %ERRORLEVEL% From f25065331a0fafe4ccaefdff109536252169e385 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 20 Sep 2011 20:26:23 +0200 Subject: [PATCH 19/28] Add some Repository.Discover() coverage --- LibGit2Sharp.Tests/RepositoryFixture.cs | 13 +++++++++++++ LibGit2Sharp/Repository.cs | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/LibGit2Sharp.Tests/RepositoryFixture.cs b/LibGit2Sharp.Tests/RepositoryFixture.cs index b46c92121..3903002f1 100644 --- a/LibGit2Sharp.Tests/RepositoryFixture.cs +++ b/LibGit2Sharp.Tests/RepositoryFixture.cs @@ -331,5 +331,18 @@ public void CanDiscoverAStandardRepoGivenTheWorkingDirPath() string path = Repository.Discover(Constants.StandardTestRepoWorkingDirPath); path.ShouldEqual(Path.GetFullPath(Constants.StandardTestRepoPath + Path.DirectorySeparatorChar)); } + + [Test] + public void DiscoverReturnsNullWhenNoRepoCanBeFound() + { + string path = Path.GetTempFileName(); + string suffix = "." + Guid.NewGuid().ToString().Substring(0, 7); + + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(path + suffix); + Directory.CreateDirectory(scd.RootedDirectoryPath); + Repository.Discover(scd.RootedDirectoryPath).ShouldBeNull(); + + File.Delete(path); + } } } diff --git a/LibGit2Sharp/Repository.cs b/LibGit2Sharp/Repository.cs index f9d80be6c..616fc2489 100644 --- a/LibGit2Sharp/Repository.cs +++ b/LibGit2Sharp/Repository.cs @@ -275,6 +275,12 @@ public static string Discover(string startingPath) var buffer = new byte[4096]; int result = NativeMethods.git_repository_discover(buffer, buffer.Length, PosixPathHelper.ToPosix(startingPath), false, null); + + if ((GitErrorCode)result == GitErrorCode.GIT_ENOTAREPO) + { + return null; + } + Ensure.Success(result); int nullTerminator; From 02dbc31a91fa7dccebf7cda33f24dc768fefbb17 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Tue, 20 Sep 2011 16:01:24 +0200 Subject: [PATCH 20/28] Add determination of repository status - Doesn't handle line endings conversion - Doesn't honor .gitignore - Test repositories have been moved under LibGit2Sharp.Tests - .gitattributes file has been added to prevent unexpected line endings conversion of the test repositories files Should fix issue #49. --- LibGit2Sharp.Tests/IndexFixture.cs | 167 ++++++--- LibGit2Sharp.Tests/Resources/.gitattributes | 1 + .../Resources/testrepo.git}/HEAD | 2 +- .../Resources}/testrepo.git/head-tracker | 2 +- .../Resources}/testrepo.git/index | Bin .../13/85f264afb75a56a5bec74243be9b367ba4ca08 | Bin .../18/1037049a54a1eb5fab404658a3a250b44335d7 | Bin .../18/10dff58d8a660512d4832e740f692884338ccd | Bin .../45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 | Bin .../4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 | 0 .../4c/062a6361ae6959e06292c1fa5e2822d9c96345 | Bin .../58/1f9824ecaf824221bd36edf5430f2739a7c4f5 | Bin .../5b/5b025afb0b4c913b4c338a42934a3863bf3644 | 0 .../75/057dd4114e74cca1d750d0aee1647c903cb60a | Bin .../7b/4384978d2493e851f9cca7858815fac9b10980 | Bin .../7f/76480d939dc401415927ea7ef25c676b8ddb8f | Bin .../81/4889a078c031f61ed08ab5fa863aea9314344d | Bin .../84/96071c1b46c854b31185ea97743be6a8774479 | Bin .../9f/d738e8f7967c078dceed8190330fc8648ee56a | 0 .../a4/a7dce85cf63874e984719f4fdd239f5145052f | 0 .../a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd | Bin .../a8/233120f6ad708f843d861ce2b7228ec4e3dec6 | Bin .../b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 | 0 .../be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 | 0 .../c4/7800c7266a2be04c571c04d5a6614691ea99bd | 0 .../e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 | Bin .../f6/0079018b664e4e79329a7ef9559c8d9e0378d1 | Bin .../fa/49b077972391ad58037050f2a75f74e3671e92 | Bin .../fd/093bff70906175335656e6ce6ae05783708765 | Bin ...1e489679b7d3418f9ab594bda8ceb37dd4c695.idx | Bin ...e489679b7d3418f9ab594bda8ceb37dd4c695.pack | Bin ...c6adf9f61318f041845b01440d09aa7a91e1b5.idx | Bin ...6adf9f61318f041845b01440d09aa7a91e1b5.pack | Bin ...5f5d483273108c9d8dd0e4728ccf0b2982423a.idx | Bin ...f5d483273108c9d8dd0e4728ccf0b2982423a.pack | Bin .../Resources}/testrepo.git/packed-refs | 6 +- .../Resources}/testrepo.git/refs/heads/br2 | 2 +- .../Resources}/testrepo.git/refs/heads/master | 2 +- .../testrepo.git/refs/heads/packed-test | 2 +- .../Resources}/testrepo.git/refs/heads/test | 2 +- .../Resources}/testrepo.git/refs/tags/e90810b | 2 +- .../Resources}/testrepo.git/refs/tags/lw | 2 +- .../testrepo.git/refs/tags/point_to_blob | 2 +- .../Resources}/testrepo.git/refs/tags/test | 2 +- .../Resources}/testrepo_wd/1/branch_file.txt | 0 .../Resources}/testrepo_wd/README | 0 .../Resources}/testrepo_wd/branch_file.txt | 0 .../testrepo_wd/dot_git/COMMIT_EDITMSG | 2 +- .../Resources/testrepo_wd/dot_git}/HEAD | 2 +- .../Resources}/testrepo_wd/dot_git/config | 28 +- .../testrepo_wd/dot_git/description | 2 +- .../dot_git/hooks/applypatch-msg.sample | 30 +- .../dot_git/hooks/commit-msg.sample | 48 +-- .../dot_git/hooks/post-commit.sample | 16 +- .../dot_git/hooks/post-receive.sample | 30 +- .../dot_git/hooks/post-update.sample | 16 +- .../dot_git/hooks/pre-applypatch.sample | 28 +- .../dot_git/hooks/pre-commit.sample | 92 ++--- .../dot_git/hooks/pre-rebase.sample | 338 +++++++++--------- .../dot_git/hooks/prepare-commit-msg.sample | 72 ++-- .../testrepo_wd/dot_git/hooks/update.sample | 256 ++++++------- .../Resources}/testrepo_wd/dot_git/index | Bin .../testrepo_wd/dot_git/info/exclude | 12 +- .../Resources}/testrepo_wd/dot_git/logs/HEAD | 4 +- .../dot_git/logs/refs/heads/master | 4 +- .../13/85f264afb75a56a5bec74243be9b367ba4ca08 | Bin .../15/d2ecc60893449f4fe4593dd51a4706dec212f5 | Bin .../18/1037049a54a1eb5fab404658a3a250b44335d7 | Bin .../18/10dff58d8a660512d4832e740f692884338ccd | Bin .../45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 | Bin .../4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 | 0 .../4c/062a6361ae6959e06292c1fa5e2822d9c96345 | Bin .../56/05472eb48cb4e60b5aa8810cc5ec8138026fad | Bin .../58/1f9824ecaf824221bd36edf5430f2739a7c4f5 | Bin .../59/2d3c869dbc4127fc57c189cb94f2794fa84e7e | Bin .../5b/5b025afb0b4c913b4c338a42934a3863bf3644 | 0 .../75/057dd4114e74cca1d750d0aee1647c903cb60a | Bin .../7b/4384978d2493e851f9cca7858815fac9b10980 | Bin .../7f/76480d939dc401415927ea7ef25c676b8ddb8f | Bin .../81/4889a078c031f61ed08ab5fa863aea9314344d | Bin .../84/96071c1b46c854b31185ea97743be6a8774479 | Bin .../84/9f67c87f926a81af895fc037c04ad85549d73f | Bin .../92/17230e462ada4319e332e2a4b2d325c2d60550 | Bin .../93/5a81d39fd68adb3b7ba3fc60c9663f326435e3 | Bin .../9f/d738e8f7967c078dceed8190330fc8648ee56a | 0 .../a4/a7dce85cf63874e984719f4fdd239f5145052f | 0 .../a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd | Bin .../a8/233120f6ad708f843d861ce2b7228ec4e3dec6 | Bin .../b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 | 0 .../be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 | 0 .../c4/7800c7266a2be04c571c04d5a6614691ea99bd | 0 .../e6/8bcc7b5d6370fac1ea9929f4b6982a4ebb99a2 | Bin .../e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 | Bin .../f2/e41136eac73c39554dede1fd7e67b12502d577 | Bin .../f6/0079018b664e4e79329a7ef9559c8d9e0378d1 | Bin .../fa/49b077972391ad58037050f2a75f74e3671e92 | Bin .../fd/093bff70906175335656e6ce6ae05783708765 | Bin ...1e489679b7d3418f9ab594bda8ceb37dd4c695.idx | Bin ...e489679b7d3418f9ab594bda8ceb37dd4c695.pack | Bin ...c6adf9f61318f041845b01440d09aa7a91e1b5.idx | Bin ...6adf9f61318f041845b01440d09aa7a91e1b5.pack | Bin ...5f5d483273108c9d8dd0e4728ccf0b2982423a.idx | Bin ...f5d483273108c9d8dd0e4728ccf0b2982423a.pack | Bin .../testrepo_wd/dot_git/packed-refs | 20 +- .../testrepo_wd/dot_git/refs/heads/master | 2 +- .../dot_git/refs/remotes/origin/HEAD | 2 +- .../testrepo_wd/modified_staged_file.txt | 0 .../testrepo_wd/modified_unstaged_file.txt | 0 .../Resources}/testrepo_wd/new.txt | 0 .../testrepo_wd/new_tracked_file.txt | 0 .../testrepo_wd/new_untracked_file.txt | 0 LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs | 2 +- LibGit2Sharp/Core/NativeMethods.cs | 14 + LibGit2Sharp/Core/Utf8Marshaler.cs | 4 +- LibGit2Sharp/FileStatus.cs | 44 +++ LibGit2Sharp/Index.cs | 61 ++-- LibGit2Sharp/IndexEntry.cs | 10 +- LibGit2Sharp/IndexEntryState.cs | 13 - LibGit2Sharp/LibGit2Sharp.csproj | 4 +- LibGit2Sharp/RepositoryStatus.cs | 145 ++++++++ LibGit2Sharp/StatusEntry.cs | 81 +++++ 121 files changed, 963 insertions(+), 613 deletions(-) create mode 100644 LibGit2Sharp.Tests/Resources/.gitattributes rename {Resources/testrepo_wd/dot_git => LibGit2Sharp.Tests/Resources/testrepo.git}/HEAD (95%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/head-tracker (90%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/index (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/packed-refs (98%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/heads/br2 (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/heads/master (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/heads/packed-test (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/heads/test (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/tags/e90810b (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/tags/lw (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/tags/point_to_blob (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo.git/refs/tags/test (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/1/branch_file.txt (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/README (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/branch_file.txt (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/COMMIT_EDITMSG (95%) rename {Resources/testrepo.git => LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git}/HEAD (95%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/config (95%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/description (98%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/applypatch-msg.sample (96%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/commit-msg.sample (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/post-commit.sample (95%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/post-receive.sample (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/post-update.sample (95%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/pre-applypatch.sample (96%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/pre-commit.sample (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/pre-rebase.sample (96%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/hooks/update.sample (96%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/index (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/info/exclude (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/logs/HEAD (99%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/logs/refs/heads/master (99%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/15/d2ecc60893449f4fe4593dd51a4706dec212f5 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/18/10dff58d8a660512d4832e740f692884338ccd (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/56/05472eb48cb4e60b5aa8810cc5ec8138026fad (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/59/2d3c869dbc4127fc57c189cb94f2794fa84e7e (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/84/96071c1b46c854b31185ea97743be6a8774479 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/84/9f67c87f926a81af895fc037c04ad85549d73f (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/92/17230e462ada4319e332e2a4b2d325c2d60550 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/93/5a81d39fd68adb3b7ba3fc60c9663f326435e3 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/e6/8bcc7b5d6370fac1ea9929f4b6982a4ebb99a2 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/f2/e41136eac73c39554dede1fd7e67b12502d577 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/fd/093bff70906175335656e6ce6ae05783708765 (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/packed-refs (98%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/refs/heads/master (97%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/dot_git/refs/remotes/origin/HEAD (96%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/modified_staged_file.txt (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/modified_unstaged_file.txt (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/new.txt (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/new_tracked_file.txt (100%) rename {Resources => LibGit2Sharp.Tests/Resources}/testrepo_wd/new_untracked_file.txt (100%) create mode 100644 LibGit2Sharp/FileStatus.cs delete mode 100644 LibGit2Sharp/IndexEntryState.cs create mode 100644 LibGit2Sharp/RepositoryStatus.cs create mode 100644 LibGit2Sharp/StatusEntry.cs diff --git a/LibGit2Sharp.Tests/IndexFixture.cs b/LibGit2Sharp.Tests/IndexFixture.cs index 0f73b8906..8d2e92254 100644 --- a/LibGit2Sharp.Tests/IndexFixture.cs +++ b/LibGit2Sharp.Tests/IndexFixture.cs @@ -1,6 +1,6 @@ using System; -using System.Collections.Generic; using System.IO; +using System.Linq; using System.Text; using LibGit2Sharp.Tests.TestHelpers; using NUnit.Framework; @@ -10,25 +10,25 @@ namespace LibGit2Sharp.Tests [TestFixture] public class IndexFixture : BaseFixture { - private readonly List expectedEntries = new List - { - "README", - "new.txt", - "branch_file.txt", - "1/branch_file.txt", - //"deleted_staged_file.txt", - "deleted_unstaged_file.txt", - "modified_staged_file.txt", - "modified_unstaged_file.txt", - "new_tracked_file.txt" - }; + private readonly string[] expectedEntries = new[] + { + "1/branch_file.txt", + "README", + "branch_file.txt", + //"deleted_staged_file.txt", + "deleted_unstaged_file.txt", + "modified_staged_file.txt", + "modified_unstaged_file.txt", + "new.txt", + "new_tracked_file.txt" + }; [Test] public void CanCountEntriesInIndex() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - repo.Index.Count.ShouldEqual(expectedEntries.Count); + repo.Index.Count.ShouldEqual(expectedEntries.Count()); } } @@ -37,31 +37,10 @@ public void CanEnumerateIndex() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - foreach (IndexEntry entry in repo.Index) - { - Assert.IsTrue(expectedEntries.Contains(entry.Path), string.Format("Could not find {0}", entry.Path)); - } + CollectionAssert.AreEqual(expectedEntries, repo.Index.Select(e => e.Path).ToArray()); } } - [Test] - [Ignore("Not implemented yet.")] - public void CanEnumerateModifiedFiles() - { - } - - [Test] - [Ignore("Not implemented yet.")] - public void CanEnumerateUntrackedFiles() - { - } - - [Test] - [Ignore("Not implemented yet.")] - public void CanEnumeratorStagedFiles() - { - } - [Test] public void CanFetchAnIndexEntryByItsName() { @@ -85,12 +64,6 @@ public void FetchingAnUnknwonIndexEntryReturnsNull() } } - [Test] - [Ignore("Not implemented yet.")] - public void CanStageAModifiedFile() - { - } - [Test] public void CanStageANewFile() { @@ -151,16 +124,25 @@ public void CanStageANewFileInAPersistentManner() using (var repo = new Repository(path.RepositoryPath)) { const string filename = "unit_test.txt"; + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Nonexistent); + repo.Index[filename].ShouldBeNull(); + File.WriteAllText(Path.Combine(repo.Info.WorkingDirectory, filename), "some contents"); + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Untracked); + repo.Index[filename].ShouldBeNull(); repo.Index.Stage(filename); repo.Index[filename].ShouldNotBeNull(); + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Added); + repo.Index[filename].State.ShouldEqual(FileStatus.Added); } using (var repo = new Repository(path.RepositoryPath)) { const string filename = "unit_test.txt"; repo.Index[filename].ShouldNotBeNull(); + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Added); + repo.Index[filename].State.ShouldEqual(FileStatus.Added); } } @@ -200,12 +182,6 @@ public void StagingANewFileWithAFullPathWhichEscapesOutOfTheWorkingDirThrows() } } - [Test] - [Ignore("Not implemented yet.")] - public void CanStageAPath() - { - } - [Test] public void CanRenameAFile() { @@ -219,8 +195,13 @@ public void CanRenameAFile() const string oldName = "polite.txt"; string oldPath = Path.Combine(repo.Info.WorkingDirectory, oldName); + repo.Index.RetrieveStatus(oldName).ShouldEqual(FileStatus.Nonexistent); + File.WriteAllText(oldPath, "hello test file\n", Encoding.ASCII); + repo.Index.RetrieveStatus(oldName).ShouldEqual(FileStatus.Untracked); + repo.Index.Stage(oldName); + repo.Index.RetrieveStatus(oldName).ShouldEqual(FileStatus.Added); // Generated through // $ echo "hello test file" | git hash-object --stdin @@ -232,9 +213,13 @@ public void CanRenameAFile() Signature who = Constants.Signature; repo.Commit(who, who, "Initial commit"); + repo.Index.RetrieveStatus(oldName).ShouldEqual(FileStatus.Unaltered); + const string newName = "being.frakking.polite.txt"; repo.Index.Move(oldName, newName); + repo.Index.RetrieveStatus(oldName).ShouldEqual(FileStatus.Removed); + repo.Index.RetrieveStatus(newName).ShouldEqual(FileStatus.Added); repo.Index.Count.ShouldEqual(1); repo.Index[newName].Id.Sha.ShouldEqual((expectedHash)); @@ -242,6 +227,9 @@ public void CanRenameAFile() who = who.TimeShift(TimeSpan.FromMinutes(5)); Commit commit = repo.Commit(who, who, "Fix file name"); + repo.Index.RetrieveStatus(oldName).ShouldEqual(FileStatus.Nonexistent); + repo.Index.RetrieveStatus(newName).ShouldEqual(FileStatus.Unaltered); + commit.Tree[newName].Target.Id.Sha.ShouldEqual(expectedHash); } } @@ -258,27 +246,102 @@ public void CanUnstageANewFile() string fullPath = Path.Combine(repo.Info.WorkingDirectory, filename); File.Exists(fullPath).ShouldBeTrue(); + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Untracked); + repo.Index.Stage(filename); repo.Index.Count.ShouldEqual(count + 1); + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Added); + repo.Index.Unstage(filename); repo.Index.Count.ShouldEqual(count); + + repo.Index.RetrieveStatus(filename).ShouldEqual(FileStatus.Untracked); } } [Test] - public void UnstagingANonStagedFileThrows() + public void CanRetrieveTheStatusOfAFile() { using (var repo = new Repository(Constants.StandardTestRepoPath)) { - Assert.Throws(() => repo.Index.Unstage("shadowcopy_of_a_unseen_ghost.txt")); + FileStatus status = repo.Index.RetrieveStatus("new_tracked_file.txt"); + status.ShouldEqual(FileStatus.Added); } } [Test] - [Ignore("Not implemented yet.")] - public void CanUnstageAModifiedFile() + public void CanRetrieveTheStatusOfTheWholeWorkingDirectory() { + TemporaryCloneOfTestRepo path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoWorkingDirPath); + using (var repo = new Repository(path.RepositoryPath)) + { + const string file = "modified_staged_file.txt"; + + RepositoryStatus status = repo.Index.RetrieveStatus(); + + IndexEntry indexEntry = repo.Index[file]; + indexEntry.State.ShouldEqual(FileStatus.Staged); + + status.ShouldNotBeNull(); + status.Count().ShouldEqual(6); + status.IsDirty.ShouldBeTrue(); + + status.Untracked.Single().ShouldEqual("new_untracked_file.txt"); + status.Modified.Single().ShouldEqual("modified_unstaged_file.txt"); + status.Missing.Single().ShouldEqual("deleted_unstaged_file.txt"); + status.Added.Single().ShouldEqual("new_tracked_file.txt"); + status.Staged.Single().ShouldEqual(file); + status.Removed.Single().ShouldEqual("deleted_staged_file.txt"); + + File.AppendAllText(Path.Combine(repo.Info.WorkingDirectory, file), "Tclem's favorite commit message: boom"); + + indexEntry.State.ShouldEqual(FileStatus.Staged | FileStatus.Modified); + + RepositoryStatus status2 = repo.Index.RetrieveStatus(); + + status2.ShouldNotBeNull(); + status2.Count().ShouldEqual(6); + status2.IsDirty.ShouldBeTrue(); + + status2.Untracked.Single().ShouldEqual("new_untracked_file.txt"); + CollectionAssert.AreEqual(new[] { file, "modified_unstaged_file.txt" }, status2.Modified); + status2.Missing.Single().ShouldEqual("deleted_unstaged_file.txt"); + status2.Added.Single().ShouldEqual("new_tracked_file.txt"); + status2.Staged.Single().ShouldEqual(file); + status2.Removed.Single().ShouldEqual("deleted_staged_file.txt"); + } + } + + [Test] + public void CanRetrieveTheStatusOfANewRepository() + { + SelfCleaningDirectory scd = BuildSelfCleaningDirectory(); + string dir = Repository.Init(scd.DirectoryPath); + + using (var repo = new Repository(dir)) + { + RepositoryStatus status = repo.Index.RetrieveStatus(); + status.ShouldNotBeNull(); + status.Count().ShouldEqual(0); + status.IsDirty.ShouldBeFalse(); + + status.Untracked.Count().ShouldEqual(0); + status.Modified.Count().ShouldEqual(0); + status.Missing.Count().ShouldEqual(0); + status.Added.Count().ShouldEqual(0); + status.Staged.Count().ShouldEqual(0); + status.Removed.Count().ShouldEqual(0); + } + } + + [Test] + public void UnstagingANonStagedFileThrows() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.Throws(() => repo.Index.Unstage("shadowcopy_of_an_unseen_ghost.txt")); + } } [Test] diff --git a/LibGit2Sharp.Tests/Resources/.gitattributes b/LibGit2Sharp.Tests/Resources/.gitattributes new file mode 100644 index 000000000..23d9bdb29 --- /dev/null +++ b/LibGit2Sharp.Tests/Resources/.gitattributes @@ -0,0 +1 @@ +* binary diff --git a/Resources/testrepo_wd/dot_git/HEAD b/LibGit2Sharp.Tests/Resources/testrepo.git/HEAD similarity index 95% rename from Resources/testrepo_wd/dot_git/HEAD rename to LibGit2Sharp.Tests/Resources/testrepo.git/HEAD index cb089cd89..cb4380516 100644 --- a/Resources/testrepo_wd/dot_git/HEAD +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/HEAD @@ -1 +1 @@ -ref: refs/heads/master +ref: refs/heads/master diff --git a/Resources/testrepo.git/head-tracker b/LibGit2Sharp.Tests/Resources/testrepo.git/head-tracker similarity index 90% rename from Resources/testrepo.git/head-tracker rename to LibGit2Sharp.Tests/Resources/testrepo.git/head-tracker index 40d876b4c..c65dc77d0 100644 --- a/Resources/testrepo.git/head-tracker +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/head-tracker @@ -1 +1 @@ -ref: HEAD +ref: HEAD diff --git a/Resources/testrepo.git/index b/LibGit2Sharp.Tests/Resources/testrepo.git/index similarity index 100% rename from Resources/testrepo.git/index rename to LibGit2Sharp.Tests/Resources/testrepo.git/index diff --git a/Resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from Resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/Resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from Resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/Resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from Resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/Resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from Resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/Resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from Resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/Resources/testrepo.git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 similarity index 100% rename from Resources/testrepo.git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 diff --git a/Resources/testrepo.git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 similarity index 100% rename from Resources/testrepo.git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 diff --git a/Resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from Resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/Resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from Resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/Resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 similarity index 100% rename from Resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 diff --git a/Resources/testrepo.git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f similarity index 100% rename from Resources/testrepo.git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f diff --git a/Resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from Resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/Resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from Resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/Resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from Resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/Resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from Resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/Resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from Resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/Resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from Resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/Resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 similarity index 100% rename from Resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/Resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from Resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/Resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from Resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/Resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from Resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from Resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/Resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from Resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/Resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from Resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx similarity index 100% rename from Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx diff --git a/Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack similarity index 100% rename from Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack diff --git a/Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx similarity index 100% rename from Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx diff --git a/Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack b/LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack similarity index 100% rename from Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack rename to LibGit2Sharp.Tests/Resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack diff --git a/Resources/testrepo.git/packed-refs b/LibGit2Sharp.Tests/Resources/testrepo.git/packed-refs similarity index 98% rename from Resources/testrepo.git/packed-refs rename to LibGit2Sharp.Tests/Resources/testrepo.git/packed-refs index 52f5e876f..39043984a 100644 --- a/Resources/testrepo.git/packed-refs +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/packed-refs @@ -1,3 +1,3 @@ -# pack-refs with: peeled -41bc8c69075bbdb46c5c6f0566cc8cc5b46e8bd9 refs/heads/packed -5b5b025afb0b4c913b4c338a42934a3863bf3644 refs/heads/packed-test +# pack-refs with: peeled +41bc8c69075bbdb46c5c6f0566cc8cc5b46e8bd9 refs/heads/packed +5b5b025afb0b4c913b4c338a42934a3863bf3644 refs/heads/packed-test diff --git a/Resources/testrepo.git/refs/heads/br2 b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/br2 similarity index 97% rename from Resources/testrepo.git/refs/heads/br2 rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/br2 index aab87e5e7..7f5cfceef 100644 --- a/Resources/testrepo.git/refs/heads/br2 +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/br2 @@ -1 +1 @@ -a4a7dce85cf63874e984719f4fdd239f5145052f +a4a7dce85cf63874e984719f4fdd239f5145052f diff --git a/Resources/testrepo.git/refs/heads/master b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/master similarity index 97% rename from Resources/testrepo.git/refs/heads/master rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/master index c52326edf..a0857c71e 100644 --- a/Resources/testrepo.git/refs/heads/master +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/master @@ -1 +1 @@ -4c062a6361ae6959e06292c1fa5e2822d9c96345 +4c062a6361ae6959e06292c1fa5e2822d9c96345 diff --git a/Resources/testrepo.git/refs/heads/packed-test b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/packed-test similarity index 97% rename from Resources/testrepo.git/refs/heads/packed-test rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/packed-test index f2c14ad83..6aa42da11 100644 --- a/Resources/testrepo.git/refs/heads/packed-test +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/packed-test @@ -1 +1 @@ -4a202b346bb0fb0db7eff3cffeb3c70babbd2045 +4a202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/Resources/testrepo.git/refs/heads/test b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/test similarity index 97% rename from Resources/testrepo.git/refs/heads/test rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/test index 399c4c73e..d84e92fb0 100644 --- a/Resources/testrepo.git/refs/heads/test +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/heads/test @@ -1 +1 @@ -e90810b8df3e80c413d903f631643c716887138d +e90810b8df3e80c413d903f631643c716887138d diff --git a/Resources/testrepo.git/refs/tags/e90810b b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/e90810b similarity index 97% rename from Resources/testrepo.git/refs/tags/e90810b rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/e90810b index 584495d3c..1dea927f5 100644 --- a/Resources/testrepo.git/refs/tags/e90810b +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/e90810b @@ -1 +1 @@ -7b4384978d2493e851f9cca7858815fac9b10980 +7b4384978d2493e851f9cca7858815fac9b10980 diff --git a/Resources/testrepo.git/refs/tags/lw b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/lw similarity index 97% rename from Resources/testrepo.git/refs/tags/lw rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/lw index 399c4c73e..d84e92fb0 100644 --- a/Resources/testrepo.git/refs/tags/lw +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/lw @@ -1 +1 @@ -e90810b8df3e80c413d903f631643c716887138d +e90810b8df3e80c413d903f631643c716887138d diff --git a/Resources/testrepo.git/refs/tags/point_to_blob b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/point_to_blob similarity index 97% rename from Resources/testrepo.git/refs/tags/point_to_blob rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/point_to_blob index f874a3ffc..826eae043 100644 --- a/Resources/testrepo.git/refs/tags/point_to_blob +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/point_to_blob @@ -1 +1 @@ -1385f264afb75a56a5bec74243be9b367ba4ca08 +1385f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/Resources/testrepo.git/refs/tags/test b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/test similarity index 97% rename from Resources/testrepo.git/refs/tags/test rename to LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/test index 6ee952a03..2a2f55c7e 100644 --- a/Resources/testrepo.git/refs/tags/test +++ b/LibGit2Sharp.Tests/Resources/testrepo.git/refs/tags/test @@ -1 +1 @@ -b25fa35b38051e4ae45d4222e795f9df2e43f1d1 +b25fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/Resources/testrepo_wd/1/branch_file.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/1/branch_file.txt similarity index 100% rename from Resources/testrepo_wd/1/branch_file.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/1/branch_file.txt diff --git a/Resources/testrepo_wd/README b/LibGit2Sharp.Tests/Resources/testrepo_wd/README similarity index 100% rename from Resources/testrepo_wd/README rename to LibGit2Sharp.Tests/Resources/testrepo_wd/README diff --git a/Resources/testrepo_wd/branch_file.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/branch_file.txt similarity index 100% rename from Resources/testrepo_wd/branch_file.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/branch_file.txt diff --git a/Resources/testrepo_wd/dot_git/COMMIT_EDITMSG b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/COMMIT_EDITMSG similarity index 95% rename from Resources/testrepo_wd/dot_git/COMMIT_EDITMSG rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/COMMIT_EDITMSG index 5e4d55315..fa71655e6 100644 --- a/Resources/testrepo_wd/dot_git/COMMIT_EDITMSG +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/COMMIT_EDITMSG @@ -1 +1 @@ -add more test files +add more test files diff --git a/Resources/testrepo.git/HEAD b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/HEAD similarity index 95% rename from Resources/testrepo.git/HEAD rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/HEAD index cb089cd89..cb4380516 100644 --- a/Resources/testrepo.git/HEAD +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/HEAD @@ -1 +1 @@ -ref: refs/heads/master +ref: refs/heads/master diff --git a/Resources/testrepo_wd/dot_git/config b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config similarity index 95% rename from Resources/testrepo_wd/dot_git/config rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config index 894da22b7..1e6a7e964 100644 --- a/Resources/testrepo_wd/dot_git/config +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config @@ -1,14 +1,14 @@ -[core] - repositoryformatversion = 0 - filemode = false - bare = false - logallrefupdates = true - symlinks = false - ignorecase = true - hideDotFiles = dotGitOnly -[remote "origin"] - fetch = +refs/heads/*:refs/remotes/origin/* - url = c:/GitHub/libgit2sharp/Resources/testrepo.git -[branch "master"] - remote = origin - merge = refs/heads/master +[core] + repositoryformatversion = 0 + filemode = false + bare = false + logallrefupdates = true + symlinks = false + ignorecase = true + hideDotFiles = dotGitOnly +[remote "origin"] + fetch = +refs/heads/*:refs/remotes/origin/* + url = c:/GitHub/libgit2sharp/Resources/testrepo.git +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/Resources/testrepo_wd/dot_git/description b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/description similarity index 98% rename from Resources/testrepo_wd/dot_git/description rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/description index 498b267a8..893e5cad2 100644 --- a/Resources/testrepo_wd/dot_git/description +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/description @@ -1 +1 @@ -Unnamed repository; edit this file 'description' to name the repository. +Unnamed repository; edit this file 'description' to name the repository. diff --git a/Resources/testrepo_wd/dot_git/hooks/applypatch-msg.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/applypatch-msg.sample similarity index 96% rename from Resources/testrepo_wd/dot_git/hooks/applypatch-msg.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/applypatch-msg.sample index 8b2a2fe84..94338dbf5 100644 --- a/Resources/testrepo_wd/dot_git/hooks/applypatch-msg.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/applypatch-msg.sample @@ -1,15 +1,15 @@ -#!/bin/sh -# -# An example hook script to check the commit log message taken by -# applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. The hook is -# allowed to edit the commit message file. -# -# To enable this hook, rename this file to "applypatch-msg". - -. git-sh-setup -test -x "$GIT_DIR/hooks/commit-msg" && - exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} -: +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +test -x "$GIT_DIR/hooks/commit-msg" && + exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} +: diff --git a/Resources/testrepo_wd/dot_git/hooks/commit-msg.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/commit-msg.sample similarity index 97% rename from Resources/testrepo_wd/dot_git/hooks/commit-msg.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/commit-msg.sample index b58d1184a..a06a8d67d 100644 --- a/Resources/testrepo_wd/dot_git/hooks/commit-msg.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/commit-msg.sample @@ -1,24 +1,24 @@ -#!/bin/sh -# -# An example hook script to check the commit log message. -# Called by "git commit" with one argument, the name of the file -# that has the commit message. The hook should exit with non-zero -# status after issuing an appropriate message if it wants to stop the -# commit. The hook is allowed to edit the commit message file. -# -# To enable this hook, rename this file to "commit-msg". - -# Uncomment the below to add a Signed-off-by line to the message. -# Doing this in a hook is a bad idea in general, but the prepare-commit-msg -# hook is more suited to it. -# -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" - -# This example catches duplicate Signed-off-by lines. - -test "" = "$(grep '^Signed-off-by: ' "$1" | - sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { - echo >&2 Duplicate Signed-off-by lines. - exit 1 -} +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/Resources/testrepo_wd/dot_git/hooks/post-commit.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-commit.sample similarity index 95% rename from Resources/testrepo_wd/dot_git/hooks/post-commit.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-commit.sample index 22668216a..9d3b4be7d 100644 --- a/Resources/testrepo_wd/dot_git/hooks/post-commit.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-commit.sample @@ -1,8 +1,8 @@ -#!/bin/sh -# -# An example hook script that is called after a successful -# commit is made. -# -# To enable this hook, rename this file to "post-commit". - -: Nothing +#!/bin/sh +# +# An example hook script that is called after a successful +# commit is made. +# +# To enable this hook, rename this file to "post-commit". + +: Nothing diff --git a/Resources/testrepo_wd/dot_git/hooks/post-receive.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-receive.sample similarity index 97% rename from Resources/testrepo_wd/dot_git/hooks/post-receive.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-receive.sample index 7a83e17ab..95e87f966 100644 --- a/Resources/testrepo_wd/dot_git/hooks/post-receive.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-receive.sample @@ -1,15 +1,15 @@ -#!/bin/sh -# -# An example hook script for the "post-receive" event. -# -# The "post-receive" script is run after receive-pack has accepted a pack -# and the repository has been updated. It is passed arguments in through -# stdin in the form -# -# For example: -# aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master -# -# see contrib/hooks/ for a sample, or uncomment the next line and -# rename the file to "post-receive". - -#. /usr/share/doc/git-core/contrib/hooks/post-receive-email +#!/bin/sh +# +# An example hook script for the "post-receive" event. +# +# The "post-receive" script is run after receive-pack has accepted a pack +# and the repository has been updated. It is passed arguments in through +# stdin in the form +# +# For example: +# aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master +# +# see contrib/hooks/ for a sample, or uncomment the next line and +# rename the file to "post-receive". + +#. /usr/share/doc/git-core/contrib/hooks/post-receive-email diff --git a/Resources/testrepo_wd/dot_git/hooks/post-update.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-update.sample similarity index 95% rename from Resources/testrepo_wd/dot_git/hooks/post-update.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-update.sample index ec17ec193..93e30366f 100644 --- a/Resources/testrepo_wd/dot_git/hooks/post-update.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/post-update.sample @@ -1,8 +1,8 @@ -#!/bin/sh -# -# An example hook script to prepare a packed repository for use over -# dumb transports. -# -# To enable this hook, rename this file to "post-update". - -exec git update-server-info +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/Resources/testrepo_wd/dot_git/hooks/pre-applypatch.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-applypatch.sample similarity index 96% rename from Resources/testrepo_wd/dot_git/hooks/pre-applypatch.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-applypatch.sample index b1f187c2e..e015e761d 100644 --- a/Resources/testrepo_wd/dot_git/hooks/pre-applypatch.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-applypatch.sample @@ -1,14 +1,14 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed -# by applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-applypatch". - -. git-sh-setup -test -x "$GIT_DIR/hooks/pre-commit" && - exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} -: +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} +: diff --git a/Resources/testrepo_wd/dot_git/hooks/pre-commit.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-commit.sample similarity index 97% rename from Resources/testrepo_wd/dot_git/hooks/pre-commit.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-commit.sample index b187c4bb1..f84e5144a 100644 --- a/Resources/testrepo_wd/dot_git/hooks/pre-commit.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-commit.sample @@ -1,46 +1,46 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git commit" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message if -# it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-commit". - -if git rev-parse --verify HEAD >/dev/null 2>&1 -then - against=HEAD -else - # Initial commit: diff against an empty tree object - against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 -fi - -# If you want to allow non-ascii filenames set this variable to true. -allownonascii=$(git config hooks.allownonascii) - -# Cross platform projects tend to avoid non-ascii filenames; prevent -# them from being added to the repository. We exploit the fact that the -# printable range starts at the space character and ends with tilde. -if [ "$allownonascii" != "true" ] && - # Note that the use of brackets around a tr range is ok here, (it's - # even required, for portability to Solaris 10's /usr/bin/tr), since - # the square bracket bytes happen to fall in the designated range. - test "$(git diff --cached --name-only --diff-filter=A -z $against | - LC_ALL=C tr -d '[ -~]\0')" -then - echo "Error: Attempt to add a non-ascii file name." - echo - echo "This can cause problems if you want to work" - echo "with people on other platforms." - echo - echo "To be portable it is advisable to rename the file ..." - echo - echo "If you know what you are doing you can disable this" - echo "check using:" - echo - echo " git config hooks.allownonascii true" - echo - exit 1 -fi - -exec git diff-index --check --cached $against -- +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 +fi + +# If you want to allow non-ascii filenames set this variable to true. +allownonascii=$(git config hooks.allownonascii) + +# Cross platform projects tend to avoid non-ascii filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test "$(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0')" +then + echo "Error: Attempt to add a non-ascii file name." + echo + echo "This can cause problems if you want to work" + echo "with people on other platforms." + echo + echo "To be portable it is advisable to rename the file ..." + echo + echo "If you know what you are doing you can disable this" + echo "check using:" + echo + echo " git config hooks.allownonascii true" + echo + exit 1 +fi + +exec git diff-index --check --cached $against -- diff --git a/Resources/testrepo_wd/dot_git/hooks/pre-rebase.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-rebase.sample similarity index 96% rename from Resources/testrepo_wd/dot_git/hooks/pre-rebase.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-rebase.sample index 9773ed4cb..d9c5522e6 100644 --- a/Resources/testrepo_wd/dot_git/hooks/pre-rebase.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/pre-rebase.sample @@ -1,169 +1,169 @@ -#!/bin/sh -# -# Copyright (c) 2006, 2008 Junio C Hamano -# -# The "pre-rebase" hook is run just before "git rebase" starts doing -# its job, and can prevent the command from running by exiting with -# non-zero status. -# -# The hook is called with the following parameters: -# -# $1 -- the upstream the series was forked from. -# $2 -- the branch being rebased (or empty when rebasing the current branch). -# -# This sample shows how to prevent topic branches that are already -# merged to 'next' branch from getting rebased, because allowing it -# would result in rebasing already published history. - -publish=next -basebranch="$1" -if test "$#" = 2 -then - topic="refs/heads/$2" -else - topic=`git symbolic-ref HEAD` || - exit 0 ;# we do not interrupt rebasing detached HEAD -fi - -case "$topic" in -refs/heads/??/*) - ;; -*) - exit 0 ;# we do not interrupt others. - ;; -esac - -# Now we are dealing with a topic branch being rebased -# on top of master. Is it OK to rebase it? - -# Does the topic really exist? -git show-ref -q "$topic" || { - echo >&2 "No such branch $topic" - exit 1 -} - -# Is topic fully merged to master? -not_in_master=`git rev-list --pretty=oneline ^master "$topic"` -if test -z "$not_in_master" -then - echo >&2 "$topic is fully merged to master; better remove it." - exit 1 ;# we could allow it, but there is no point. -fi - -# Is topic ever merged to next? If so you should not be rebasing it. -only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` -only_next_2=`git rev-list ^master ${publish} | sort` -if test "$only_next_1" = "$only_next_2" -then - not_in_topic=`git rev-list "^$topic" master` - if test -z "$not_in_topic" - then - echo >&2 "$topic is already up-to-date with master" - exit 1 ;# we could allow it, but there is no point. - else - exit 0 - fi -else - not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` - /usr/bin/perl -e ' - my $topic = $ARGV[0]; - my $msg = "* $topic has commits already merged to public branch:\n"; - my (%not_in_next) = map { - /^([0-9a-f]+) /; - ($1 => 1); - } split(/\n/, $ARGV[1]); - for my $elem (map { - /^([0-9a-f]+) (.*)$/; - [$1 => $2]; - } split(/\n/, $ARGV[2])) { - if (!exists $not_in_next{$elem->[0]}) { - if ($msg) { - print STDERR $msg; - undef $msg; - } - print STDERR " $elem->[1]\n"; - } - } - ' "$topic" "$not_in_next" "$not_in_master" - exit 1 -fi - -exit 0 - -################################################################ - -This sample hook safeguards topic branches that have been -published from being rewound. - -The workflow assumed here is: - - * Once a topic branch forks from "master", "master" is never - merged into it again (either directly or indirectly). - - * Once a topic branch is fully cooked and merged into "master", - it is deleted. If you need to build on top of it to correct - earlier mistakes, a new topic branch is created by forking at - the tip of the "master". This is not strictly necessary, but - it makes it easier to keep your history simple. - - * Whenever you need to test or publish your changes to topic - branches, merge them into "next" branch. - -The script, being an example, hardcodes the publish branch name -to be "next", but it is trivial to make it configurable via -$GIT_DIR/config mechanism. - -With this workflow, you would want to know: - -(1) ... if a topic branch has ever been merged to "next". Young - topic branches can have stupid mistakes you would rather - clean up before publishing, and things that have not been - merged into other branches can be easily rebased without - affecting other people. But once it is published, you would - not want to rewind it. - -(2) ... if a topic branch has been fully merged to "master". - Then you can delete it. More importantly, you should not - build on top of it -- other people may already want to - change things related to the topic as patches against your - "master", so if you need further changes, it is better to - fork the topic (perhaps with the same name) afresh from the - tip of "master". - -Let's look at this example: - - o---o---o---o---o---o---o---o---o---o "next" - / / / / - / a---a---b A / / - / / / / - / / c---c---c---c B / - / / / \ / - / / / b---b C \ / - / / / / \ / - ---o---o---o---o---o---o---o---o---o---o---o "master" - - -A, B and C are topic branches. - - * A has one fix since it was merged up to "next". - - * B has finished. It has been fully merged up to "master" and "next", - and is ready to be deleted. - - * C has not merged to "next" at all. - -We would want to allow C to be rebased, refuse A, and encourage -B to be deleted. - -To compute (1): - - git rev-list ^master ^topic next - git rev-list ^master next - - if these match, topic has not merged in next at all. - -To compute (2): - - git rev-list master..topic - - if this is empty, it is fully merged to "master". +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up-to-date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +exit 0 + +################################################################ + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". diff --git a/Resources/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample similarity index 97% rename from Resources/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample index f093a02ec..d48c8b712 100644 --- a/Resources/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/prepare-commit-msg.sample @@ -1,36 +1,36 @@ -#!/bin/sh -# -# An example hook script to prepare the commit log message. -# Called by "git commit" with the name of the file that has the -# commit message, followed by the description of the commit -# message's source. The hook's purpose is to edit the commit -# message file. If the hook fails with a non-zero status, -# the commit is aborted. -# -# To enable this hook, rename this file to "prepare-commit-msg". - -# This hook includes three examples. The first comments out the -# "Conflicts:" part of a merge commit. -# -# The second includes the output of "git diff --name-status -r" -# into the message, just before the "git status" output. It is -# commented because it doesn't cope with --amend or with squashed -# commits. -# -# The third example adds a Signed-off-by line to the message, that can -# still be edited. This is rarely a good idea. - -case "$2,$3" in - merge,) - /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; - -# ,|template,) -# /usr/bin/perl -i.bak -pe ' -# print "\n" . `git diff --cached --name-status -r` -# if /^#/ && $first++ == 0' "$1" ;; - - *) ;; -esac - -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first comments out the +# "Conflicts:" part of a merge commit. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +case "$2,$3" in + merge,) + /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; + +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$1" ;; + + *) ;; +esac + +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" diff --git a/Resources/testrepo_wd/dot_git/hooks/update.sample b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/update.sample similarity index 96% rename from Resources/testrepo_wd/dot_git/hooks/update.sample rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/update.sample index 71ab04edc..032fe11cd 100644 --- a/Resources/testrepo_wd/dot_git/hooks/update.sample +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/hooks/update.sample @@ -1,128 +1,128 @@ -#!/bin/sh -# -# An example hook script to blocks unannotated tags from entering. -# Called by "git receive-pack" with arguments: refname sha1-old sha1-new -# -# To enable this hook, rename this file to "update". -# -# Config -# ------ -# hooks.allowunannotated -# This boolean sets whether unannotated tags will be allowed into the -# repository. By default they won't be. -# hooks.allowdeletetag -# This boolean sets whether deleting tags will be allowed in the -# repository. By default they won't be. -# hooks.allowmodifytag -# This boolean sets whether a tag may be modified after creation. By default -# it won't be. -# hooks.allowdeletebranch -# This boolean sets whether deleting branches will be allowed in the -# repository. By default they won't be. -# hooks.denycreatebranch -# This boolean sets whether remotely creating branches will be denied -# in the repository. By default this is allowed. -# - -# --- Command line -refname="$1" -oldrev="$2" -newrev="$3" - -# --- Safety check -if [ -z "$GIT_DIR" ]; then - echo "Don't run this script from the command line." >&2 - echo " (if you want, you could supply GIT_DIR then run" >&2 - echo " $0 )" >&2 - exit 1 -fi - -if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then - echo "Usage: $0 " >&2 - exit 1 -fi - -# --- Config -allowunannotated=$(git config --bool hooks.allowunannotated) -allowdeletebranch=$(git config --bool hooks.allowdeletebranch) -denycreatebranch=$(git config --bool hooks.denycreatebranch) -allowdeletetag=$(git config --bool hooks.allowdeletetag) -allowmodifytag=$(git config --bool hooks.allowmodifytag) - -# check for no description -projectdesc=$(sed -e '1q' "$GIT_DIR/description") -case "$projectdesc" in -"Unnamed repository"* | "") - echo "*** Project description file hasn't been set" >&2 - exit 1 - ;; -esac - -# --- Check types -# if $newrev is 0000...0000, it's a commit to delete a ref. -zero="0000000000000000000000000000000000000000" -if [ "$newrev" = "$zero" ]; then - newrev_type=delete -else - newrev_type=$(git cat-file -t $newrev) -fi - -case "$refname","$newrev_type" in - refs/tags/*,commit) - # un-annotated tag - short_refname=${refname##refs/tags/} - if [ "$allowunannotated" != "true" ]; then - echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 - echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 - exit 1 - fi - ;; - refs/tags/*,delete) - # delete tag - if [ "$allowdeletetag" != "true" ]; then - echo "*** Deleting a tag is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/tags/*,tag) - # annotated tag - if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 - then - echo "*** Tag '$refname' already exists." >&2 - echo "*** Modifying a tag is not allowed in this repository." >&2 - exit 1 - fi - ;; - refs/heads/*,commit) - # branch - if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then - echo "*** Creating a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/heads/*,delete) - # delete branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/remotes/*,commit) - # tracking branch - ;; - refs/remotes/*,delete) - # delete tracking branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a tracking branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - *) - # Anything else (is there anything else?) - echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 - exit 1 - ;; -esac - -# --- Finished -exit 0 +#!/bin/sh +# +# An example hook script to blocks unannotated tags from entering. +# Called by "git receive-pack" with arguments: refname sha1-old sha1-new +# +# To enable this hook, rename this file to "update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# hooks.allowdeletetag +# This boolean sets whether deleting tags will be allowed in the +# repository. By default they won't be. +# hooks.allowmodifytag +# This boolean sets whether a tag may be modified after creation. By default +# it won't be. +# hooks.allowdeletebranch +# This boolean sets whether deleting branches will be allowed in the +# repository. By default they won't be. +# hooks.denycreatebranch +# This boolean sets whether remotely creating branches will be denied +# in the repository. By default this is allowed. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --bool hooks.allowunannotated) +allowdeletebranch=$(git config --bool hooks.allowdeletebranch) +denycreatebranch=$(git config --bool hooks.denycreatebranch) +allowdeletetag=$(git config --bool hooks.allowdeletetag) +allowmodifytag=$(git config --bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero="0000000000000000000000000000000000000000" +if [ "$newrev" = "$zero" ]; then + newrev_type=delete +else + newrev_type=$(git cat-file -t $newrev) +fi + +case "$refname","$newrev_type" in + refs/tags/*,commit) + # un-annotated tag + short_refname=${refname##refs/tags/} + if [ "$allowunannotated" != "true" ]; then + echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/Resources/testrepo_wd/dot_git/index b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/index similarity index 100% rename from Resources/testrepo_wd/dot_git/index rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/index diff --git a/Resources/testrepo_wd/dot_git/info/exclude b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/info/exclude similarity index 97% rename from Resources/testrepo_wd/dot_git/info/exclude rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/info/exclude index a5196d1be..f00680973 100644 --- a/Resources/testrepo_wd/dot_git/info/exclude +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/info/exclude @@ -1,6 +1,6 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/Resources/testrepo_wd/dot_git/logs/HEAD b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/logs/HEAD similarity index 99% rename from Resources/testrepo_wd/dot_git/logs/HEAD rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/logs/HEAD index 62217cbb7..67120624f 100644 --- a/Resources/testrepo_wd/dot_git/logs/HEAD +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/logs/HEAD @@ -1,2 +1,2 @@ -0000000000000000000000000000000000000000 4c062a6361ae6959e06292c1fa5e2822d9c96345 Tim Clem 1303768198 -0700 clone: from c:/GitHub/libgit2sharp/Resources/testrepo.git -4c062a6361ae6959e06292c1fa5e2822d9c96345 592d3c869dbc4127fc57c189cb94f2794fa84e7e Tim Clem 1303835722 -0700 commit: add more test files +0000000000000000000000000000000000000000 4c062a6361ae6959e06292c1fa5e2822d9c96345 Tim Clem 1303768198 -0700 clone: from c:/GitHub/libgit2sharp/Resources/testrepo.git +4c062a6361ae6959e06292c1fa5e2822d9c96345 592d3c869dbc4127fc57c189cb94f2794fa84e7e Tim Clem 1303835722 -0700 commit: add more test files diff --git a/Resources/testrepo_wd/dot_git/logs/refs/heads/master b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/logs/refs/heads/master similarity index 99% rename from Resources/testrepo_wd/dot_git/logs/refs/heads/master rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/logs/refs/heads/master index 62217cbb7..67120624f 100644 --- a/Resources/testrepo_wd/dot_git/logs/refs/heads/master +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/logs/refs/heads/master @@ -1,2 +1,2 @@ -0000000000000000000000000000000000000000 4c062a6361ae6959e06292c1fa5e2822d9c96345 Tim Clem 1303768198 -0700 clone: from c:/GitHub/libgit2sharp/Resources/testrepo.git -4c062a6361ae6959e06292c1fa5e2822d9c96345 592d3c869dbc4127fc57c189cb94f2794fa84e7e Tim Clem 1303835722 -0700 commit: add more test files +0000000000000000000000000000000000000000 4c062a6361ae6959e06292c1fa5e2822d9c96345 Tim Clem 1303768198 -0700 clone: from c:/GitHub/libgit2sharp/Resources/testrepo.git +4c062a6361ae6959e06292c1fa5e2822d9c96345 592d3c869dbc4127fc57c189cb94f2794fa84e7e Tim Clem 1303835722 -0700 commit: add more test files diff --git a/Resources/testrepo_wd/dot_git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/Resources/testrepo_wd/dot_git/objects/15/d2ecc60893449f4fe4593dd51a4706dec212f5 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/15/d2ecc60893449f4fe4593dd51a4706dec212f5 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/15/d2ecc60893449f4fe4593dd51a4706dec212f5 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/15/d2ecc60893449f4fe4593dd51a4706dec212f5 diff --git a/Resources/testrepo_wd/dot_git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/Resources/testrepo_wd/dot_git/objects/18/10dff58d8a660512d4832e740f692884338ccd b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/Resources/testrepo_wd/dot_git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/Resources/testrepo_wd/dot_git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/Resources/testrepo_wd/dot_git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/4c/062a6361ae6959e06292c1fa5e2822d9c96345 diff --git a/Resources/testrepo_wd/dot_git/objects/56/05472eb48cb4e60b5aa8810cc5ec8138026fad b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/56/05472eb48cb4e60b5aa8810cc5ec8138026fad similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/56/05472eb48cb4e60b5aa8810cc5ec8138026fad rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/56/05472eb48cb4e60b5aa8810cc5ec8138026fad diff --git a/Resources/testrepo_wd/dot_git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/58/1f9824ecaf824221bd36edf5430f2739a7c4f5 diff --git a/Resources/testrepo_wd/dot_git/objects/59/2d3c869dbc4127fc57c189cb94f2794fa84e7e b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/59/2d3c869dbc4127fc57c189cb94f2794fa84e7e similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/59/2d3c869dbc4127fc57c189cb94f2794fa84e7e rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/59/2d3c869dbc4127fc57c189cb94f2794fa84e7e diff --git a/Resources/testrepo_wd/dot_git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/Resources/testrepo_wd/dot_git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/Resources/testrepo_wd/dot_git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 diff --git a/Resources/testrepo_wd/dot_git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/7f/76480d939dc401415927ea7ef25c676b8ddb8f diff --git a/Resources/testrepo_wd/dot_git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/Resources/testrepo_wd/dot_git/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/Resources/testrepo_wd/dot_git/objects/84/9f67c87f926a81af895fc037c04ad85549d73f b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/84/9f67c87f926a81af895fc037c04ad85549d73f similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/84/9f67c87f926a81af895fc037c04ad85549d73f rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/84/9f67c87f926a81af895fc037c04ad85549d73f diff --git a/Resources/testrepo_wd/dot_git/objects/92/17230e462ada4319e332e2a4b2d325c2d60550 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/92/17230e462ada4319e332e2a4b2d325c2d60550 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/92/17230e462ada4319e332e2a4b2d325c2d60550 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/92/17230e462ada4319e332e2a4b2d325c2d60550 diff --git a/Resources/testrepo_wd/dot_git/objects/93/5a81d39fd68adb3b7ba3fc60c9663f326435e3 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/93/5a81d39fd68adb3b7ba3fc60c9663f326435e3 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/93/5a81d39fd68adb3b7ba3fc60c9663f326435e3 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/93/5a81d39fd68adb3b7ba3fc60c9663f326435e3 diff --git a/Resources/testrepo_wd/dot_git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/Resources/testrepo_wd/dot_git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/Resources/testrepo_wd/dot_git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/Resources/testrepo_wd/dot_git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/Resources/testrepo_wd/dot_git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/Resources/testrepo_wd/dot_git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/Resources/testrepo_wd/dot_git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/Resources/testrepo_wd/dot_git/objects/e6/8bcc7b5d6370fac1ea9929f4b6982a4ebb99a2 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/e6/8bcc7b5d6370fac1ea9929f4b6982a4ebb99a2 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/e6/8bcc7b5d6370fac1ea9929f4b6982a4ebb99a2 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/e6/8bcc7b5d6370fac1ea9929f4b6982a4ebb99a2 diff --git a/Resources/testrepo_wd/dot_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Resources/testrepo_wd/dot_git/objects/f2/e41136eac73c39554dede1fd7e67b12502d577 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/f2/e41136eac73c39554dede1fd7e67b12502d577 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/f2/e41136eac73c39554dede1fd7e67b12502d577 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/f2/e41136eac73c39554dede1fd7e67b12502d577 diff --git a/Resources/testrepo_wd/dot_git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/Resources/testrepo_wd/dot_git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/Resources/testrepo_wd/dot_git/objects/fd/093bff70906175335656e6ce6ae05783708765 b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx diff --git a/Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack diff --git a/Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx diff --git a/Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack similarity index 100% rename from Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack diff --git a/Resources/testrepo_wd/dot_git/packed-refs b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/packed-refs similarity index 98% rename from Resources/testrepo_wd/dot_git/packed-refs rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/packed-refs index 40db0d7b3..1ab6ad52e 100644 --- a/Resources/testrepo_wd/dot_git/packed-refs +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/packed-refs @@ -1,10 +1,10 @@ -# pack-refs with: peeled -b25fa35b38051e4ae45d4222e795f9df2e43f1d1 refs/tags/test -^e90810b8df3e80c413d903f631643c716887138d -e90810b8df3e80c413d903f631643c716887138d refs/tags/lw -7b4384978d2493e851f9cca7858815fac9b10980 refs/tags/e90810b -^e90810b8df3e80c413d903f631643c716887138d -e90810b8df3e80c413d903f631643c716887138d refs/remotes/origin/test -4a202b346bb0fb0db7eff3cffeb3c70babbd2045 refs/remotes/origin/packed-test -4c062a6361ae6959e06292c1fa5e2822d9c96345 refs/remotes/origin/master -a4a7dce85cf63874e984719f4fdd239f5145052f refs/remotes/origin/br2 +# pack-refs with: peeled +b25fa35b38051e4ae45d4222e795f9df2e43f1d1 refs/tags/test +^e90810b8df3e80c413d903f631643c716887138d +e90810b8df3e80c413d903f631643c716887138d refs/tags/lw +7b4384978d2493e851f9cca7858815fac9b10980 refs/tags/e90810b +^e90810b8df3e80c413d903f631643c716887138d +e90810b8df3e80c413d903f631643c716887138d refs/remotes/origin/test +4a202b346bb0fb0db7eff3cffeb3c70babbd2045 refs/remotes/origin/packed-test +4c062a6361ae6959e06292c1fa5e2822d9c96345 refs/remotes/origin/master +a4a7dce85cf63874e984719f4fdd239f5145052f refs/remotes/origin/br2 diff --git a/Resources/testrepo_wd/dot_git/refs/heads/master b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/refs/heads/master similarity index 97% rename from Resources/testrepo_wd/dot_git/refs/heads/master rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/refs/heads/master index f436f16be..07848c3b8 100644 --- a/Resources/testrepo_wd/dot_git/refs/heads/master +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/refs/heads/master @@ -1 +1 @@ -592d3c869dbc4127fc57c189cb94f2794fa84e7e +592d3c869dbc4127fc57c189cb94f2794fa84e7e diff --git a/Resources/testrepo_wd/dot_git/refs/remotes/origin/HEAD b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/refs/remotes/origin/HEAD similarity index 96% rename from Resources/testrepo_wd/dot_git/refs/remotes/origin/HEAD rename to LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/refs/remotes/origin/HEAD index 6efe28fff..b827f0c47 100644 --- a/Resources/testrepo_wd/dot_git/refs/remotes/origin/HEAD +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/refs/remotes/origin/HEAD @@ -1 +1 @@ -ref: refs/remotes/origin/master +ref: refs/remotes/origin/master diff --git a/Resources/testrepo_wd/modified_staged_file.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/modified_staged_file.txt similarity index 100% rename from Resources/testrepo_wd/modified_staged_file.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/modified_staged_file.txt diff --git a/Resources/testrepo_wd/modified_unstaged_file.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/modified_unstaged_file.txt similarity index 100% rename from Resources/testrepo_wd/modified_unstaged_file.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/modified_unstaged_file.txt diff --git a/Resources/testrepo_wd/new.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/new.txt similarity index 100% rename from Resources/testrepo_wd/new.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/new.txt diff --git a/Resources/testrepo_wd/new_tracked_file.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/new_tracked_file.txt similarity index 100% rename from Resources/testrepo_wd/new_tracked_file.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/new_tracked_file.txt diff --git a/Resources/testrepo_wd/new_untracked_file.txt b/LibGit2Sharp.Tests/Resources/testrepo_wd/new_untracked_file.txt similarity index 100% rename from Resources/testrepo_wd/new_untracked_file.txt rename to LibGit2Sharp.Tests/Resources/testrepo_wd/new_untracked_file.txt diff --git a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs index b69602789..b8e912c74 100644 --- a/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs +++ b/LibGit2Sharp.Tests/TestHelpers/BaseFixture.cs @@ -16,7 +16,7 @@ static BaseFixture() private static void SetUpTestEnvironment() { - var source = new DirectoryInfo(@"../../../Resources"); + var source = new DirectoryInfo(@"../../Resources"); var target = new DirectoryInfo(@"Resources"); if (target.Exists) diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index e2a4134dd..636c0d418 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -231,6 +231,20 @@ public static extern int git_signature_new( long time, int offset); + [DllImport(libgit2)] + public static extern int git_status_file( + out FileStatus statusflags, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string filepath); + + internal delegate int status_callback( + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string statuspath, + uint statusflags, + IntPtr payload); + + [DllImport(libgit2)] + public static extern int git_status_foreach(RepositorySafeHandle repo, status_callback callback, IntPtr payload); + [DllImport(libgit2)] public static extern int git_tag_create( out GitOid oid, diff --git a/LibGit2Sharp/Core/Utf8Marshaler.cs b/LibGit2Sharp/Core/Utf8Marshaler.cs index 5f0ea487e..5f454f79c 100644 --- a/LibGit2Sharp/Core/Utf8Marshaler.cs +++ b/LibGit2Sharp/Core/Utf8Marshaler.cs @@ -44,10 +44,10 @@ public unsafe object MarshalNativeToManaged(IntPtr pNativeData) var length = (int)(walk - (byte*)pNativeData); // should not be null terminated - var strbuf = new byte[length - 1]; + var strbuf = new byte[length]; // skip the trailing null - Marshal.Copy(pNativeData, strbuf, 0, length - 1); + Marshal.Copy(pNativeData, strbuf, 0, length); string data = Encoding.UTF8.GetString(strbuf); return data; } diff --git a/LibGit2Sharp/FileStatus.cs b/LibGit2Sharp/FileStatus.cs new file mode 100644 index 000000000..b8dd951fd --- /dev/null +++ b/LibGit2Sharp/FileStatus.cs @@ -0,0 +1,44 @@ +using System; + +namespace LibGit2Sharp +{ + [Flags] + public enum FileStatus + { + Nonexistent = -1, /* GIT_STATUS_NOTFOUND */ + Unaltered = 0, /* GIT_STATUS_CURRENT */ + + ///

+ /// New file has been added to the Index. It's unknown from the Head. + /// + Added = (1 << 0), /* GIT_STATUS_INDEX_NEW */ + + /// + /// New version of a file has been added to the Index. A previous version exists in the Head. + /// + Staged = (1 << 1), /* GIT_STATUS_INDEX_MODIFIED */ + + /// + /// The deletion of a file has been promoted from the working directory to the Index. A previous version exists in the Head. + /// + Removed = (1 << 2), /* GIT_STATUS_INDEX_DELETED */ + + /// + /// New file in the working directory, unknown from the Index and the Head. + /// + Untracked = (1 << 3), /* GIT_STATUS_WT_NEW */ + + /// + /// The file has been updated in the working directory. A previous version exists in the Index. + /// + Modified = (1 << 4), /* GIT_STATUS_WT_MODIFIED */ + + /// + /// The file has been deleted from the working directory. A previous version exists in the Index. + /// + Missing = (1 << 5), /* GIT_STATUS_WT_DELETED */ + + //TODO: Ignored files not handled yet + GIT_STATUS_IGNORED = (1 << 6), /* GIT_STATUS_IGNORED */ + } +} diff --git a/LibGit2Sharp/Index.cs b/LibGit2Sharp/Index.cs index faefc20ed..539480ed9 100644 --- a/LibGit2Sharp/Index.cs +++ b/LibGit2Sharp/Index.cs @@ -53,25 +53,10 @@ private IndexEntry this[uint index] get { IntPtr entryPtr = NativeMethods.git_index_get(handle, index); - return IndexEntry.CreateFromPtr(entryPtr); + return IndexEntry.CreateFromPtr(repo, entryPtr); } } - public IEnumerable Modified - { - get { throw new NotImplementedException(); } - } - - public IEnumerable Staged - { - get { throw new NotImplementedException(); } - } - - public IEnumerable Untracked - { - get { throw new NotImplementedException(); } - } - #region IDisposable Members /// @@ -125,9 +110,7 @@ public void Stage(string path) { Ensure.ArgumentNotNullOrEmptyString(path, "path"); - string relativePath = BuildRelativePathFrom(path); - - AddToIndex(relativePath); + AddToIndex(path); UpdatePhysicalIndex(); } @@ -136,7 +119,7 @@ public void Unstage(string path) { Ensure.ArgumentNotNullOrEmptyString(path, "path"); - string relativePath = BuildRelativePathFrom(path); + string relativePath = BuildRelativePathFrom(repo, path); RemoveFromIndex(relativePath); @@ -150,8 +133,8 @@ public void Move(string sourcePath, string destinationPath) Ensure.ArgumentNotNullOrEmptyString(sourcePath, "sourcepath"); Ensure.ArgumentNotNullOrEmptyString(destinationPath, "destinationpath"); - string relativeSourcePath = BuildRelativePathFrom(sourcePath); - string relativeDestinationPath = BuildRelativePathFrom(destinationPath); + string relativeSourcePath = BuildRelativePathFrom(repo, sourcePath); + string relativeDestinationPath = BuildRelativePathFrom(repo, destinationPath); string wd = repo.Info.WorkingDirectory; if (Directory.Exists(Path.Combine(wd, relativeSourcePath))) @@ -170,13 +153,13 @@ public void Move(string sourcePath, string destinationPath) private void AddToIndex(string path) { - int res = NativeMethods.git_index_add(handle, BuildRelativePathFrom(path)); + int res = NativeMethods.git_index_add(handle, BuildRelativePathFrom(repo, path)); Ensure.Success(res); } - private void RemoveFromIndex(string relativePath) + private void RemoveFromIndex(string path) { - int res = NativeMethods.git_index_find(handle, relativePath); + int res = NativeMethods.git_index_find(handle, BuildRelativePathFrom(repo, path)); Ensure.Success(res, true); res = NativeMethods.git_index_remove(handle, res); @@ -201,7 +184,7 @@ private void UpdatePhysicalIndex() Ensure.Success(res); } - private string BuildRelativePathFrom(string path) //TODO: To be removed when libgit2 natively implements this + private static string BuildRelativePathFrom(Repository repo, string path) //TODO: To be removed when libgit2 natively implements this { if (!Path.IsPathRooted(path)) { @@ -212,10 +195,34 @@ private string BuildRelativePathFrom(string path) //TODO: To be removed when lib if (!normalizedPath.StartsWith(repo.Info.WorkingDirectory, StringComparison.Ordinal)) { - throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Unable to stage file '{0}'. This file is not located under the working directory of the repository ('{1}').", normalizedPath, repo.Info.WorkingDirectory)); + throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Unable to process file '{0}'. This file is not located under the working directory of the repository ('{1}').", normalizedPath, repo.Info.WorkingDirectory)); } return normalizedPath.Substring(repo.Info.WorkingDirectory.Length); } + + public FileStatus RetrieveStatus(string filePath) + { + Ensure.ArgumentNotNullOrEmptyString(filePath, "filePath"); + + string relativePath = BuildRelativePathFrom(repo, filePath); + + FileStatus status; + + int res = NativeMethods.git_status_file(out status, repo.Handle, relativePath); + if (res == (int)GitErrorCode.GIT_ENOTFOUND) + { + return FileStatus.Nonexistent; + } + + Ensure.Success(res); + + return status; + } + + public RepositoryStatus RetrieveStatus() + { + return new RepositoryStatus(repo.Handle); + } } } diff --git a/LibGit2Sharp/IndexEntry.cs b/LibGit2Sharp/IndexEntry.cs index ac3688551..87441b649 100644 --- a/LibGit2Sharp/IndexEntry.cs +++ b/LibGit2Sharp/IndexEntry.cs @@ -6,18 +6,24 @@ namespace LibGit2Sharp { public class IndexEntry { - public IndexEntryState State { get; private set; } + private Func state; + + public FileStatus State + { + get { return state(); } + } public string Path { get; private set; } public ObjectId Id { get; private set; } - internal static IndexEntry CreateFromPtr(IntPtr ptr) + internal static IndexEntry CreateFromPtr(Repository repo, IntPtr ptr) { var entry = (GitIndexEntry)Marshal.PtrToStructure(ptr, typeof(GitIndexEntry)); return new IndexEntry { Path = entry.Path, Id = new ObjectId(entry.oid), + state = () => repo.Index.RetrieveStatus(entry.Path) }; } } diff --git a/LibGit2Sharp/IndexEntryState.cs b/LibGit2Sharp/IndexEntryState.cs deleted file mode 100644 index 4f44b1d2d..000000000 --- a/LibGit2Sharp/IndexEntryState.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace LibGit2Sharp -{ - public enum IndexEntryState - { - NotModified, - NewUntracked, - NewStaged, - ModifiedUnstaged, - ModifiedStaged, - RemovedUnstaged, - RemovedStaged, - } -} diff --git a/LibGit2Sharp/LibGit2Sharp.csproj b/LibGit2Sharp/LibGit2Sharp.csproj index 5f85c225b..0e2c0368f 100644 --- a/LibGit2Sharp/LibGit2Sharp.csproj +++ b/LibGit2Sharp/LibGit2Sharp.csproj @@ -59,6 +59,7 @@ + @@ -85,7 +86,6 @@ - @@ -98,7 +98,9 @@ + + diff --git a/LibGit2Sharp/RepositoryStatus.cs b/LibGit2Sharp/RepositoryStatus.cs new file mode 100644 index 000000000..ba3ae7927 --- /dev/null +++ b/LibGit2Sharp/RepositoryStatus.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + /// + /// Holds the result of the determination of the state of the working directory. + /// Only files that differ from the current index and/or commit will be considered. + /// + public class RepositoryStatus : IEnumerable + { + private readonly List statusEntries = new List(); + private readonly List added = new List(); + private readonly List staged = new List(); + private readonly List removed = new List(); + private readonly List missing = new List(); + private readonly List modified = new List(); + private readonly List untracked = new List(); + private readonly bool isDirty; + + private readonly NativeMethods.status_callback callback; + + private readonly IDictionary> dispatcher = Build(); + + private static IDictionary> Build() + { + return new Dictionary> + { + { FileStatus.Untracked, (rs, s) => rs.untracked.Add(s) }, + { FileStatus.Modified, (rs, s) => rs.modified.Add(s) }, + { FileStatus.Missing, (rs, s) => rs.missing.Add(s) }, + { FileStatus.Added, (rs, s) => rs.added.Add(s) }, + { FileStatus.Staged, (rs, s) => rs.staged.Add(s) }, + { FileStatus.Removed, (rs, s) => rs.removed.Add(s) }, + }; + } + + internal RepositoryStatus(RepositorySafeHandle handle) + { + callback = new NativeMethods.status_callback(StateChanged); + Process(handle); + isDirty = statusEntries.Count != 0; + } + + private void Process(RepositorySafeHandle handle) + { + int res = NativeMethods.git_status_foreach(handle, callback, IntPtr.Zero); + Ensure.Success(res); + } + + private int StateChanged(string filePath, uint state, IntPtr payload) + { + var gitStatus = (FileStatus)state; + statusEntries.Add(new StatusEntry(filePath, gitStatus)); + + foreach (KeyValuePair> kvp in dispatcher) + { + if ((gitStatus & kvp.Key) != kvp.Key) + { + continue; + } + + kvp.Value(this, filePath); + } + + return 0; + } + + /// + /// Returns an enumerator that iterates through the collection. + /// + /// An object that can be used to iterate through the collection. + public IEnumerator GetEnumerator() + { + return statusEntries.GetEnumerator(); + } + + /// + /// Returns an enumerator that iterates through the collection. + /// + /// An object that can be used to iterate through the collection. + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + /// + /// List of files added to the index, which are not in the current commit + /// + public IEnumerable Added + { + get { return added; } + } + + /// + /// List of files added to the index, which are already in the current commit with different content + /// + public IEnumerable Staged + { + get { return staged; } + } + + /// + /// List of files removed from the index but are existent in the current commit + /// + public IEnumerable Removed + { + get { return removed; } + } + + /// + /// List of files existent in the index but are missing in the working directory + /// + public IEnumerable Missing + { + get { return missing; } + } + + /// + /// List of files with unstaged modifications. A file may be modified and staged at the same time if it has been modified after adding. + /// + public IEnumerable Modified + { + get { return modified; } + } + + /// + /// List of files existing in the working directory but are neither tracked in the index nor in the current commit. + /// + public IEnumerable Untracked + { + get { return untracked; } + } + + /// + /// True if the index or the working directory has been altered since the last commit. False otherwise. + /// + public bool IsDirty + { + get { return isDirty; } + } + } +} diff --git a/LibGit2Sharp/StatusEntry.cs b/LibGit2Sharp/StatusEntry.cs new file mode 100644 index 000000000..b1695ea32 --- /dev/null +++ b/LibGit2Sharp/StatusEntry.cs @@ -0,0 +1,81 @@ +using System; +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + public class StatusEntry : IEquatable + { + private readonly string filePath; + private readonly FileStatus state; + + private static readonly LambdaEqualityHelper equalityHelper = + new LambdaEqualityHelper(new Func[] { x => x.FilePath, x => x.State }); + + internal StatusEntry(string filePath, FileStatus state) + { + this.filePath = filePath; + this.state = state; + } + + public FileStatus State + { + get { return state; } + } + + public string FilePath + { + get { return filePath; } + } + + /// + /// Determines whether the specified is equal to the current . + /// + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. + public override bool Equals(object obj) + { + return Equals(obj as StatusEntry); + } + + /// + /// Determines whether the specified is equal to the current . + /// + /// The to compare with the current . + /// True if the specified is equal to the current ; otherwise, false. + public bool Equals(StatusEntry other) + { + return equalityHelper.Equals(this, other); + } + + /// + /// Returns the hash code for this instance. + /// + /// A 32-bit signed integer hash code. + public override int GetHashCode() + { + return equalityHelper.GetHashCode(this); + } + + /// + /// Tests if two are equal. + /// + /// First to compare. + /// Second to compare. + /// True if the two objects are equal; false otherwise. + public static bool operator ==(StatusEntry left, StatusEntry right) + { + return Equals(left, right); + } + + /// + /// Tests if two are different. + /// + /// First to compare. + /// Second to compare. + /// True if the two objects are different; false otherwise. + public static bool operator !=(StatusEntry left, StatusEntry right) + { + return !Equals(left, right); + } + } +} From 87248e06d8fe95208fab10feb7318335a638e4ba Mon Sep 17 00:00:00 2001 From: Tim Clem Date: Tue, 27 Sep 2011 22:11:57 +0200 Subject: [PATCH 21/28] Can get basic settings from config file --- LibGit2Sharp.Tests/ConfigurationFixture.cs | 45 +++++++ LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj | 1 + .../Resources/testrepo_wd/dot_git/config | 3 + LibGit2Sharp/Configuration.cs | 111 ++++++++++++++++++ LibGit2Sharp/Core/ConfigurationSafeHandle.cs | 11 ++ LibGit2Sharp/Core/NativeMethods.cs | 18 +++ LibGit2Sharp/LibGit2Sharp.csproj | 2 + LibGit2Sharp/Repository.cs | 10 ++ 8 files changed, 201 insertions(+) create mode 100644 LibGit2Sharp.Tests/ConfigurationFixture.cs create mode 100644 LibGit2Sharp/Configuration.cs create mode 100644 LibGit2Sharp/Core/ConfigurationSafeHandle.cs diff --git a/LibGit2Sharp.Tests/ConfigurationFixture.cs b/LibGit2Sharp.Tests/ConfigurationFixture.cs new file mode 100644 index 000000000..7049711c2 --- /dev/null +++ b/LibGit2Sharp.Tests/ConfigurationFixture.cs @@ -0,0 +1,45 @@ +using LibGit2Sharp.Tests.TestHelpers; +using NUnit.Framework; + +namespace LibGit2Sharp.Tests +{ + [TestFixture] + public class ConfigurationFixture : BaseFixture + { + [Test] + public void CanReadBooleanValue() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.IsFalse(repo.Config.Get("core.bare")); + } + } + + [Test] + public void CanReadIntValue() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.AreEqual(2, repo.Config.Get("unittests.intsetting")); + } + } + + [Test] + public void CanReadLongValue() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.AreEqual(15234, repo.Config.Get("unittests.longsetting")); + } + } + + [Test] + public void CanReadStringValue() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.AreEqual("+refs/heads/*:refs/remotes/origin/*", repo.Config.Get("remotes.origin.fetch")); + } + } + } +} diff --git a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj index a946dba11..d3460e9c9 100644 --- a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj +++ b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj @@ -42,6 +42,7 @@ + diff --git a/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config index 1e6a7e964..7e002a7d2 100644 --- a/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config +++ b/LibGit2Sharp.Tests/Resources/testrepo_wd/dot_git/config @@ -12,3 +12,6 @@ [branch "master"] remote = origin merge = refs/heads/master +[unittests] + longsetting = 15234 + intsetting = 2 diff --git a/LibGit2Sharp/Configuration.cs b/LibGit2Sharp/Configuration.cs new file mode 100644 index 000000000..ad14c324a --- /dev/null +++ b/LibGit2Sharp/Configuration.cs @@ -0,0 +1,111 @@ +using System; +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + /// + /// Provides access to the '.gitconfig' configuration for a repository. + /// + public class Configuration : IDisposable + { + private readonly ConfigurationSafeHandle handle; + private readonly Repository repository; + + public Configuration(Repository repository) + { + this.repository = repository; + Ensure.Success(NativeMethods.git_repository_config(out handle, this.repository.Handle, null, null)); + } + + #region IDisposable Members + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + #endregion + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + protected virtual void Dispose(bool disposing) + { + if (handle != null && !handle.IsInvalid) + { + handle.Dispose(); + } + } + + /// + /// Get a configuration value for a key. Keys are in the form 'section.name'. For example in + /// order to get the value for this in a .gitconfig file: + /// + /// [core] + /// bare = true + /// + /// You would call: + /// + /// bool isBare = repo.Config.Get("core.bare"); + /// + /// + /// + /// + public T Get(string key) + { + if (typeof(T) == typeof(string)) + { + return (T)(object)GetString(key); + } + + if (typeof(T) == typeof(bool)) + { + return (T)(object)GetBool(key); + } + + if (typeof(T) == typeof(int)) + { + return (T)(object)GetInt(key); + } + + if (typeof(T) == typeof(long)) + { + return (T)(object)GetLong(key); + } + + return default(T); + } + + private bool GetBool(string key) + { + bool value; + Ensure.Success(NativeMethods.git_config_get_bool(handle, key, out value)); + return value; + } + + private int GetInt(string key) + { + int value; + Ensure.Success(NativeMethods.git_config_get_int(handle, key, out value)); + return value; + } + + private long GetLong(string key) + { + long value; + Ensure.Success(NativeMethods.git_config_get_long(handle, key, out value)); + return value; + } + + private string GetString(string key) + { + IntPtr value; + Ensure.Success(NativeMethods.git_config_get_string(handle, key, out value)); + return value.MarshallAsString(); + } + } +} diff --git a/LibGit2Sharp/Core/ConfigurationSafeHandle.cs b/LibGit2Sharp/Core/ConfigurationSafeHandle.cs new file mode 100644 index 000000000..862b4f177 --- /dev/null +++ b/LibGit2Sharp/Core/ConfigurationSafeHandle.cs @@ -0,0 +1,11 @@ +namespace LibGit2Sharp.Core +{ + internal class ConfigurationSafeHandle : SafeHandleBase + { + protected override bool ReleaseHandle() + { + NativeMethods.git_config_free(handle); + return true; + } + } +} diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 636c0d418..2ba9a0d73 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -50,6 +50,21 @@ public static extern int git_commit_create( [DllImport(libgit2)] public static extern IntPtr git_commit_tree_oid(IntPtr commit); + [DllImport(libgit2)] + public static extern void git_config_free(IntPtr cfg); + + [DllImport(libgit2)] + public static extern int git_config_get_bool(ConfigurationSafeHandle cfg, string name, out bool value); + + [DllImport(libgit2)] + public static extern int git_config_get_int(ConfigurationSafeHandle cfg, string name, out int value); + + [DllImport(libgit2)] + public static extern int git_config_get_long(ConfigurationSafeHandle cfg, string name, out long value); + + [DllImport(libgit2)] + public static extern int git_config_get_string(ConfigurationSafeHandle cfg, string name, out IntPtr value); + [DllImport(libgit2)] public static extern int git_index_add( IndexSafeHandle index, @@ -158,6 +173,9 @@ public static extern int git_reference_set_target( [DllImport(libgit2)] public static extern GitReferenceType git_reference_type(IntPtr reference); + [DllImport(libgit2)] + public static extern int git_repository_config(out ConfigurationSafeHandle cfg, RepositorySafeHandle repo, string userConfigPath, string systemConfigPath); + [DllImport(libgit2)] public static extern IntPtr git_repository_database(RepositorySafeHandle repository); diff --git a/LibGit2Sharp/LibGit2Sharp.csproj b/LibGit2Sharp/LibGit2Sharp.csproj index 0e2c0368f..99ae85330 100644 --- a/LibGit2Sharp/LibGit2Sharp.csproj +++ b/LibGit2Sharp/LibGit2Sharp.csproj @@ -50,7 +50,9 @@ + + diff --git a/LibGit2Sharp/Repository.cs b/LibGit2Sharp/Repository.cs index 616fc2489..4fde429cc 100644 --- a/LibGit2Sharp/Repository.cs +++ b/LibGit2Sharp/Repository.cs @@ -12,6 +12,7 @@ public class Repository : IDisposable { private readonly BranchCollection branches; private readonly CommitCollection commits; + private readonly Lazy config; private readonly RepositorySafeHandle handle; private readonly Index index; private readonly ReferenceCollection refs; @@ -43,6 +44,7 @@ public Repository(string path) branches = new BranchCollection(this); tags = new TagCollection(this); info = new Lazy(() => new RepositoryInformation(this, isBare)); + config = new Lazy(() => new Configuration(this)); } internal RepositorySafeHandle Handle @@ -69,6 +71,14 @@ public Branch Head } } + /// + /// Provides access to the configuration settings for this repository. + /// + public Configuration Config + { + get { return config.Value; } + } + /// /// Gets the index. /// From a00a92d815ffad3ea2d1bcfd76a2496ddc1dc375 Mon Sep 17 00:00:00 2001 From: Tim Clem Date: Wed, 28 Sep 2011 15:32:33 +0200 Subject: [PATCH 22/28] Can set configuration values for a repository --- LibGit2Sharp.Tests/ConfigurationFixture.cs | 72 +++++++++++++++++++++- LibGit2Sharp/Configuration.cs | 59 +++++++++++++++--- LibGit2Sharp/Core/NativeMethods.cs | 15 +++++ 3 files changed, 135 insertions(+), 11 deletions(-) diff --git a/LibGit2Sharp.Tests/ConfigurationFixture.cs b/LibGit2Sharp.Tests/ConfigurationFixture.cs index 7049711c2..30c61b619 100644 --- a/LibGit2Sharp.Tests/ConfigurationFixture.cs +++ b/LibGit2Sharp.Tests/ConfigurationFixture.cs @@ -1,4 +1,6 @@ -using LibGit2Sharp.Tests.TestHelpers; +using System.IO; +using System.Text.RegularExpressions; +using LibGit2Sharp.Tests.TestHelpers; using NUnit.Framework; namespace LibGit2Sharp.Tests @@ -6,6 +8,14 @@ namespace LibGit2Sharp.Tests [TestFixture] public class ConfigurationFixture : BaseFixture { + private static void AssertValueInConfigFile(string repoPath, string regex) + { + var configFilePath = Path.Combine(repoPath, "config"); + var text = File.ReadAllText(configFilePath); + var r = new Regex(regex).Match(text); + Assert.IsTrue(r.Success, text); + } + [Test] public void CanReadBooleanValue() { @@ -41,5 +51,65 @@ public void CanReadStringValue() Assert.AreEqual("+refs/heads/*:refs/remotes/origin/*", repo.Config.Get("remotes.origin.fetch")); } } + + [Test] + public void CanSetBooleanValue() + { + var path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoPath); + using (var repo = new Repository(path.RepositoryPath)) + { + repo.Config.Set("unittests.boolsetting", true); + + AssertValueInConfigFile(path.RepositoryPath, "boolsetting = true$"); + } + } + + [Test] + public void CanSetIntValue() + { + var path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoPath); + using (var repo = new Repository(path.RepositoryPath)) + { + repo.Config.Set("unittests.intsetting", 3); + + AssertValueInConfigFile(path.RepositoryPath, "intsetting = 3$"); + } + } + + [Test] + public void CanSetLongValue() + { + var path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoPath); + using (var repo = new Repository(path.RepositoryPath)) + { + repo.Config.Set("unittests.longsetting", (long)451); + + AssertValueInConfigFile(path.RepositoryPath, "longsetting = 451"); + } + } + + [Test] + public void CanSetStringValue() + { + var path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoPath); + using (var repo = new Repository(path.RepositoryPath)) + { + repo.Config.Set("unittests.stringsetting", "val"); + + AssertValueInConfigFile(path.RepositoryPath, "stringsetting = val$"); + } + } + + [Test] + public void ReadingValueThatDoesntExistThrows() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.Throws(() => repo.Config.Get("unittests.ghostsetting")); + Assert.Throws(() => repo.Config.Get("unittests.ghostsetting")); + Assert.Throws(() => repo.Config.Get("unittests.ghostsetting")); + Assert.Throws(() => repo.Config.Get("unittests.ghostsetting")); + } + } } } diff --git a/LibGit2Sharp/Configuration.cs b/LibGit2Sharp/Configuration.cs index ad14c324a..1305f866a 100644 --- a/LibGit2Sharp/Configuration.cs +++ b/LibGit2Sharp/Configuration.cs @@ -4,17 +4,15 @@ namespace LibGit2Sharp { /// - /// Provides access to the '.gitconfig' configuration for a repository. + /// Provides access to the '.git\config' configuration for a repository. /// public class Configuration : IDisposable { private readonly ConfigurationSafeHandle handle; - private readonly Repository repository; public Configuration(Repository repository) { - this.repository = repository; - Ensure.Success(NativeMethods.git_repository_config(out handle, this.repository.Handle, null, null)); + Ensure.Success(NativeMethods.git_repository_config(out handle, repository.Handle, null, null)); } #region IDisposable Members @@ -42,15 +40,17 @@ protected virtual void Dispose(bool disposing) } /// - /// Get a configuration value for a key. Keys are in the form 'section.name'. For example in - /// order to get the value for this in a .gitconfig file: + /// Get a configuration value for a key. Keys are in the form 'section.name'. + /// + /// For example in order to get the value for this in a .git\config file: /// - /// [core] - /// bare = true + /// [core] + /// bare = true /// - /// You would call: + /// You would call: /// - /// bool isBare = repo.Config.Get("core.bare"); + /// bool isBare = repo.Config.Get<bool>("core.bare"); + /// /// /// /// @@ -107,5 +107,44 @@ private string GetString(string key) Ensure.Success(NativeMethods.git_config_get_string(handle, key, out value)); return value.MarshallAsString(); } + + /// + /// Set a configuration value for a key. Keys are in the form 'section.name'. + /// + /// For example in order to set the value for this in a .git\config file: + /// + /// [test] + /// boolsetting = true + /// + /// You would call: + /// + /// repo.Config.Set("test.boolsetting", true); + /// + /// + /// + /// + /// + public void Set(string key, T value) + { + if (typeof(T) == typeof(string)) + { + Ensure.Success(NativeMethods.git_config_set_string(handle, key, (string)(object)value)); + } + + if (typeof(T) == typeof(bool)) + { + Ensure.Success(NativeMethods.git_config_set_bool(handle, key, (bool)(object)value)); + } + + if (typeof(T) == typeof(int)) + { + Ensure.Success(NativeMethods.git_config_set_int(handle, key, (int)(object)value)); + } + + if (typeof(T) == typeof(long)) + { + Ensure.Success(NativeMethods.git_config_set_long(handle, key, (long)(object)value)); + } + } } } diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 2ba9a0d73..63bb4eaae 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -65,6 +65,21 @@ public static extern int git_commit_create( [DllImport(libgit2)] public static extern int git_config_get_string(ConfigurationSafeHandle cfg, string name, out IntPtr value); + [DllImport(libgit2)] + public static extern int git_config_open_ondisk(out ConfigurationSafeHandle cfg, string path); + + [DllImport(libgit2)] + public static extern int git_config_set_bool(ConfigurationSafeHandle cfg, string name, bool value); + + [DllImport(libgit2)] + public static extern int git_config_set_int(ConfigurationSafeHandle cfg, string name, int value); + + [DllImport(libgit2)] + public static extern int git_config_set_long(ConfigurationSafeHandle cfg, string name, long value); + + [DllImport(libgit2)] + public static extern int git_config_set_string(ConfigurationSafeHandle cfg, string name, string value); + [DllImport(libgit2)] public static extern int git_index_add( IndexSafeHandle index, From f1b9313dfa52c708eb30e46561fd5438217d0e7d Mon Sep 17 00:00:00 2001 From: Tim Clem Date: Wed, 28 Sep 2011 18:54:50 +0200 Subject: [PATCH 23/28] Throw for unsupported configuration types --- LibGit2Sharp.Tests/ConfigurationFixture.cs | 23 +++++++++++++++++++++- LibGit2Sharp/Configuration.cs | 8 +++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/LibGit2Sharp.Tests/ConfigurationFixture.cs b/LibGit2Sharp.Tests/ConfigurationFixture.cs index 30c61b619..b8cd9f208 100644 --- a/LibGit2Sharp.Tests/ConfigurationFixture.cs +++ b/LibGit2Sharp.Tests/ConfigurationFixture.cs @@ -1,4 +1,5 @@ -using System.IO; +using System; +using System.IO; using System.Text.RegularExpressions; using LibGit2Sharp.Tests.TestHelpers; using NUnit.Framework; @@ -100,6 +101,16 @@ public void CanSetStringValue() } } + [Test] + public void ReadingUnsupportedTypeThrows() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.Throws(() => repo.Config.Get("unittests.setting")); + Assert.Throws(() => repo.Config.Get("unittests.setting")); + } + } + [Test] public void ReadingValueThatDoesntExistThrows() { @@ -111,5 +122,15 @@ public void ReadingValueThatDoesntExistThrows() Assert.Throws(() => repo.Config.Get("unittests.ghostsetting")); } } + + [Test] + public void SettingUnsupportedTypeThrows() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + Assert.Throws(() => repo.Config.Set("unittests.setting", (short)123)); + Assert.Throws(() => repo.Config.Set("unittests.setting", new Configuration(repo))); + } + } } } diff --git a/LibGit2Sharp/Configuration.cs b/LibGit2Sharp/Configuration.cs index 1305f866a..25981e6b0 100644 --- a/LibGit2Sharp/Configuration.cs +++ b/LibGit2Sharp/Configuration.cs @@ -77,7 +77,7 @@ public T Get(string key) return (T)(object)GetLong(key); } - return default(T); + throw new ArgumentException(string.Format("Generic Argument of type '{0}' is not supported.", typeof(T).FullName)); } private bool GetBool(string key) @@ -129,22 +129,28 @@ public void Set(string key, T value) if (typeof(T) == typeof(string)) { Ensure.Success(NativeMethods.git_config_set_string(handle, key, (string)(object)value)); + return; } if (typeof(T) == typeof(bool)) { Ensure.Success(NativeMethods.git_config_set_bool(handle, key, (bool)(object)value)); + return; } if (typeof(T) == typeof(int)) { Ensure.Success(NativeMethods.git_config_set_int(handle, key, (int)(object)value)); + return; } if (typeof(T) == typeof(long)) { Ensure.Success(NativeMethods.git_config_set_long(handle, key, (long)(object)value)); + return; } + + throw new ArgumentException(string.Format("Generic Argument of type {0} is not supported.", typeof(T))); } } } From 01c9bd085f08b85bf1dbf6fbe3cf7b4f854ce7b2 Mon Sep 17 00:00:00 2001 From: Tim Clem Date: Wed, 28 Sep 2011 15:34:42 +0200 Subject: [PATCH 24/28] Can delete a configuration variable --- LibGit2Sharp.Tests/ConfigurationFixture.cs | 17 +++++++++++++++++ LibGit2Sharp/Configuration.cs | 9 +++++++++ LibGit2Sharp/Core/NativeMethods.cs | 3 +++ 3 files changed, 29 insertions(+) diff --git a/LibGit2Sharp.Tests/ConfigurationFixture.cs b/LibGit2Sharp.Tests/ConfigurationFixture.cs index b8cd9f208..0d18c3428 100644 --- a/LibGit2Sharp.Tests/ConfigurationFixture.cs +++ b/LibGit2Sharp.Tests/ConfigurationFixture.cs @@ -65,6 +65,23 @@ public void CanSetBooleanValue() } } + [Test] + public void CanDeleteConfiguration() + { + var path = BuildTemporaryCloneOfTestRepo(Constants.StandardTestRepoPath); + using (var repo = new Repository(path.RepositoryPath)) + { + repo.Config.Set("unittests.boolsetting", true); + + repo.Config.Delete("unittests.boolsetting"); + } // config file is guaranteed to be saved when config object is freed + + using (var repo = new Repository(path.RepositoryPath)) + { + Assert.Throws(() => repo.Config.Get("unittests.boolsetting")); + } + } + [Test] public void CanSetIntValue() { diff --git a/LibGit2Sharp/Configuration.cs b/LibGit2Sharp/Configuration.cs index 25981e6b0..85d812b6d 100644 --- a/LibGit2Sharp/Configuration.cs +++ b/LibGit2Sharp/Configuration.cs @@ -28,6 +28,15 @@ public void Dispose() #endregion + /// + /// Delete a configuration variable (key and value). + /// + /// The key to delete. + public void Delete(string key) + { + Ensure.Success(NativeMethods.git_config_delete(handle, key)); + } + /// /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 63bb4eaae..9e671bd90 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -50,6 +50,9 @@ public static extern int git_commit_create( [DllImport(libgit2)] public static extern IntPtr git_commit_tree_oid(IntPtr commit); + [DllImport(libgit2)] + public static extern int git_config_delete(ConfigurationSafeHandle cfg, string name); + [DllImport(libgit2)] public static extern void git_config_free(IntPtr cfg); From 7b8a431bffe833f32fe1fad5039d525c2faca770 Mon Sep 17 00:00:00 2001 From: Tim Clem Date: Wed, 28 Sep 2011 15:35:30 +0200 Subject: [PATCH 25/28] Basic remote retrieval, can get remote --- LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj | 1 + LibGit2Sharp.Tests/RemoteFixture.cs | 30 +++++++++++++ LibGit2Sharp/Configuration.cs | 5 +++ LibGit2Sharp/Core/NativeMethods.cs | 12 ++++++ LibGit2Sharp/Core/RemoteSafeHandle.cs | 11 +++++ LibGit2Sharp/LibGit2Sharp.csproj | 3 ++ LibGit2Sharp/Remote.cs | 8 ++++ LibGit2Sharp/RemoteCollection.cs | 45 ++++++++++++++++++++ LibGit2Sharp/Repository.cs | 10 +++++ 9 files changed, 125 insertions(+) create mode 100644 LibGit2Sharp.Tests/RemoteFixture.cs create mode 100644 LibGit2Sharp/Core/RemoteSafeHandle.cs create mode 100644 LibGit2Sharp/Remote.cs create mode 100644 LibGit2Sharp/RemoteCollection.cs diff --git a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj index d3460e9c9..2617626a6 100644 --- a/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj +++ b/LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj @@ -44,6 +44,7 @@ + diff --git a/LibGit2Sharp.Tests/RemoteFixture.cs b/LibGit2Sharp.Tests/RemoteFixture.cs new file mode 100644 index 000000000..478296df3 --- /dev/null +++ b/LibGit2Sharp.Tests/RemoteFixture.cs @@ -0,0 +1,30 @@ +using LibGit2Sharp.Tests.TestHelpers; +using NUnit.Framework; + +namespace LibGit2Sharp.Tests +{ + [TestFixture] + public class RemoteFixture : BaseFixture + { + [Test] + public void CanGetRemoteOrigin() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + var origin = repo.Remotes["origin"]; + origin.ShouldNotBeNull(); + origin.Name.ShouldEqual("origin"); + origin.Url.ShouldEqual("c:/GitHub/libgit2sharp/Resources/testrepo.git"); + } + } + + [Test] + public void GettingRemoteThatDoesntExistThrows() + { + using (var repo = new Repository(Constants.StandardTestRepoPath)) + { + repo.Remotes["test"].ShouldBeNull(); + } + } + } +} diff --git a/LibGit2Sharp/Configuration.cs b/LibGit2Sharp/Configuration.cs index 85d812b6d..696a5ce56 100644 --- a/LibGit2Sharp/Configuration.cs +++ b/LibGit2Sharp/Configuration.cs @@ -15,6 +15,11 @@ public Configuration(Repository repository) Ensure.Success(NativeMethods.git_repository_config(out handle, repository.Handle, null, null)); } + internal ConfigurationSafeHandle Handle + { + get { return handle; } + } + #region IDisposable Members /// diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index 9e671bd90..ebca84583 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -191,6 +191,18 @@ public static extern int git_reference_set_target( [DllImport(libgit2)] public static extern GitReferenceType git_reference_type(IntPtr reference); + [DllImport(libgit2)] + public static extern void git_remote_free(IntPtr remote); + + [DllImport(libgit2)] + public static extern int git_remote_get(out RemoteSafeHandle remote, ConfigurationSafeHandle cfg, string name); + + [DllImport(libgit2)] + public static extern IntPtr git_remote_name(RemoteSafeHandle remote); + + [DllImport(libgit2)] + public static extern IntPtr git_remote_url(RemoteSafeHandle remote); + [DllImport(libgit2)] public static extern int git_repository_config(out ConfigurationSafeHandle cfg, RepositorySafeHandle repo, string userConfigPath, string systemConfigPath); diff --git a/LibGit2Sharp/Core/RemoteSafeHandle.cs b/LibGit2Sharp/Core/RemoteSafeHandle.cs new file mode 100644 index 000000000..844b6855c --- /dev/null +++ b/LibGit2Sharp/Core/RemoteSafeHandle.cs @@ -0,0 +1,11 @@ +namespace LibGit2Sharp.Core +{ + internal class RemoteSafeHandle : SafeHandleBase + { + protected override bool ReleaseHandle() + { + NativeMethods.git_remote_free(handle); + return true; + } + } +} diff --git a/LibGit2Sharp/LibGit2Sharp.csproj b/LibGit2Sharp/LibGit2Sharp.csproj index 99ae85330..80541b535 100644 --- a/LibGit2Sharp/LibGit2Sharp.csproj +++ b/LibGit2Sharp/LibGit2Sharp.csproj @@ -70,6 +70,7 @@ Code + Code @@ -94,6 +95,8 @@ + + Code diff --git a/LibGit2Sharp/Remote.cs b/LibGit2Sharp/Remote.cs new file mode 100644 index 000000000..17f7654be --- /dev/null +++ b/LibGit2Sharp/Remote.cs @@ -0,0 +1,8 @@ +namespace LibGit2Sharp +{ + public class Remote + { + public string Name { get; internal set; } + public string Url { get; internal set; } + } +} diff --git a/LibGit2Sharp/RemoteCollection.cs b/LibGit2Sharp/RemoteCollection.cs new file mode 100644 index 000000000..b69d163f3 --- /dev/null +++ b/LibGit2Sharp/RemoteCollection.cs @@ -0,0 +1,45 @@ +using LibGit2Sharp.Core; + +namespace LibGit2Sharp +{ + public class RemoteCollection + { + private readonly Repository repository; + + internal RemoteCollection(Repository repository) + { + this.repository = repository; + } + + public Remote this[string name] + { + get { return RemoteForName(name); } + } + + private Remote RemoteForName(string name) + { + var remote = new Remote(); + RemoteSafeHandle handle; + + int res = NativeMethods.git_remote_get(out handle, repository.Config.Handle, name); + + if (res == (int)GitErrorCode.GIT_ENOTFOUND) + { + return null; + } + + Ensure.Success(res); + + using (handle) + { + var ptr = NativeMethods.git_remote_name(handle); + remote.Name = ptr.MarshallAsString(); + + ptr = NativeMethods.git_remote_url(handle); + remote.Url = ptr.MarshallAsString(); + } + + return remote; + } + } +} diff --git a/LibGit2Sharp/Repository.cs b/LibGit2Sharp/Repository.cs index 4fde429cc..27bbc9766 100644 --- a/LibGit2Sharp/Repository.cs +++ b/LibGit2Sharp/Repository.cs @@ -16,6 +16,7 @@ public class Repository : IDisposable private readonly RepositorySafeHandle handle; private readonly Index index; private readonly ReferenceCollection refs; + private readonly Lazy remotes; private readonly TagCollection tags; private readonly Lazy info; private readonly bool isBare; @@ -45,6 +46,7 @@ public Repository(string path) tags = new TagCollection(this); info = new Lazy(() => new RepositoryInformation(this, isBare)); config = new Lazy(() => new Configuration(this)); + remotes = new Lazy(() => new RemoteCollection(this)); } internal RepositorySafeHandle Handle @@ -95,6 +97,14 @@ public ReferenceCollection Refs get { return refs; } } + /// + /// Lookup and manage remotes in the repository. + /// + public RemoteCollection Remotes + { + get { return remotes.Value; } + } + /// /// Lookup and enumerate commits in the repository. /// Iterating this collection directly starts walking from the HEAD. From e3d4bcd523dfd228f0c09a632b53a20b9aca0fdf Mon Sep 17 00:00:00 2001 From: Tim Clem Date: Tue, 27 Sep 2011 22:52:32 +0200 Subject: [PATCH 26/28] git_commit_message_short has been removed - reimplement in C# --- LibGit2Sharp.Tests/CommitFixture.cs | 2 ++ LibGit2Sharp/Commit.cs | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/LibGit2Sharp.Tests/CommitFixture.cs b/LibGit2Sharp.Tests/CommitFixture.cs index 0ec436463..8af664bcf 100644 --- a/LibGit2Sharp.Tests/CommitFixture.cs +++ b/LibGit2Sharp.Tests/CommitFixture.cs @@ -308,6 +308,7 @@ public void CanLookupCommitGeneric() { var commit = repo.Lookup(sha); commit.Message.ShouldEqual("testing\n"); + commit.MessageShort.ShouldEqual("testing"); commit.Sha.ShouldEqual(sha); } } @@ -323,6 +324,7 @@ public void CanReadCommitData() var commit = (Commit)obj; commit.Message.ShouldEqual("testing\n"); + commit.MessageShort.ShouldEqual("testing"); commit.Encoding.ShouldEqual("UTF-8"); commit.Sha.ShouldEqual(sha); diff --git a/LibGit2Sharp/Commit.cs b/LibGit2Sharp/Commit.cs index 994eea114..48ad86fe1 100644 --- a/LibGit2Sharp/Commit.cs +++ b/LibGit2Sharp/Commit.cs @@ -13,12 +13,14 @@ public class Commit : GitObject private readonly Repository repo; private readonly Lazy> parents; private readonly Lazy tree; + private readonly Lazy shortMessage; internal Commit(ObjectId id, ObjectId treeId, Repository repo) : base(id) { tree = new Lazy(() => repo.Lookup(treeId)); parents = new Lazy>(() => RetrieveParentsOfCommit(id.Oid)); + shortMessage = new Lazy(ExtractShortMessage); this.repo = repo; } @@ -27,6 +29,24 @@ internal Commit(ObjectId id, ObjectId treeId, Repository repo) /// public string Message { get; private set; } + /// + /// Gets the short commit message which is usually the first line of the commit. + /// + public string MessageShort + { + get { return shortMessage.Value; } + } + + private string ExtractShortMessage() + { + if (Message == null) + { + return string.Empty; //TODO: Add some test coverage + } + + return Message.Split('\n')[0]; + } + /// /// Gets the encoding of the message. /// @@ -93,7 +113,7 @@ internal static Commit BuildFromPtr(IntPtr obj, ObjectId id, Repository repo) return new Commit(id, treeId, repo) { - Message = NativeMethods.git_commit_message(obj).MarshallAsString(), + Message = NativeMethods.git_commit_message(obj).MarshallAsString(), //TODO: Turn into string.Empty if null Encoding = RetrieveEncodingOf(obj), Author = new Signature(NativeMethods.git_commit_author(obj)), Committer = new Signature(NativeMethods.git_commit_committer(obj)), From 22bcc81d6e68754235230eedc0dfad76342da171 Mon Sep 17 00:00:00 2001 From: Emeric Fermas Date: Wed, 28 Sep 2011 21:07:45 +0200 Subject: [PATCH 27/28] Fix NativeMethods signatures --- LibGit2Sharp/Core/NativeMethods.cs | 64 +++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/LibGit2Sharp/Core/NativeMethods.cs b/LibGit2Sharp/Core/NativeMethods.cs index ebca84583..bdce80faf 100644 --- a/LibGit2Sharp/Core/NativeMethods.cs +++ b/LibGit2Sharp/Core/NativeMethods.cs @@ -57,31 +57,60 @@ public static extern int git_commit_create( public static extern void git_config_free(IntPtr cfg); [DllImport(libgit2)] - public static extern int git_config_get_bool(ConfigurationSafeHandle cfg, string name, out bool value); + public static extern int git_config_get_bool( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + out bool value); + + [DllImport(libgit2)] + public static extern int git_config_get_int( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + out int value); [DllImport(libgit2)] - public static extern int git_config_get_int(ConfigurationSafeHandle cfg, string name, out int value); + public static extern int git_config_get_long( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + out long value); [DllImport(libgit2)] - public static extern int git_config_get_long(ConfigurationSafeHandle cfg, string name, out long value); + public static extern int git_config_get_string( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + out IntPtr value); [DllImport(libgit2)] - public static extern int git_config_get_string(ConfigurationSafeHandle cfg, string name, out IntPtr value); + public static extern int git_config_open_global(out ConfigurationSafeHandle cfg); [DllImport(libgit2)] - public static extern int git_config_open_ondisk(out ConfigurationSafeHandle cfg, string path); + public static extern int git_config_open_ondisk( + out ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string path); [DllImport(libgit2)] - public static extern int git_config_set_bool(ConfigurationSafeHandle cfg, string name, bool value); + public static extern int git_config_set_bool( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + [MarshalAs(UnmanagedType.Bool)] bool value); [DllImport(libgit2)] - public static extern int git_config_set_int(ConfigurationSafeHandle cfg, string name, int value); + public static extern int git_config_set_int( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + int value); [DllImport(libgit2)] - public static extern int git_config_set_long(ConfigurationSafeHandle cfg, string name, long value); + public static extern int git_config_set_long( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + long value); [DllImport(libgit2)] - public static extern int git_config_set_string(ConfigurationSafeHandle cfg, string name, string value); + public static extern int git_config_set_string( + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string value); [DllImport(libgit2)] public static extern int git_index_add( @@ -143,7 +172,7 @@ public static extern int git_reference_create_oid( RepositorySafeHandle repo, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, ref GitOid oid, - bool force); + [MarshalAs(UnmanagedType.Bool)] bool force); [DllImport(libgit2)] public static extern int git_reference_create_symbolic( @@ -151,7 +180,7 @@ public static extern int git_reference_create_symbolic( RepositorySafeHandle repo, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string target, - bool force); + [MarshalAs(UnmanagedType.Bool)] bool force); [DllImport(libgit2)] public static extern int git_reference_delete(IntPtr reference); @@ -172,7 +201,7 @@ public static extern int git_reference_lookup( public static extern int git_reference_rename( IntPtr reference, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string newName, - bool force); + [MarshalAs(UnmanagedType.Bool)] bool force); [DllImport(libgit2)] public static extern int git_reference_resolve(out IntPtr resolvedReference, IntPtr reference); @@ -195,7 +224,10 @@ public static extern int git_reference_set_target( public static extern void git_remote_free(IntPtr remote); [DllImport(libgit2)] - public static extern int git_remote_get(out RemoteSafeHandle remote, ConfigurationSafeHandle cfg, string name); + public static extern int git_remote_get( + out RemoteSafeHandle remote, + ConfigurationSafeHandle cfg, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string name); [DllImport(libgit2)] public static extern IntPtr git_remote_name(RemoteSafeHandle remote); @@ -204,7 +236,11 @@ public static extern int git_reference_set_target( public static extern IntPtr git_remote_url(RemoteSafeHandle remote); [DllImport(libgit2)] - public static extern int git_repository_config(out ConfigurationSafeHandle cfg, RepositorySafeHandle repo, string userConfigPath, string systemConfigPath); + public static extern int git_repository_config( + out ConfigurationSafeHandle cfg, + RepositorySafeHandle repo, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string userConfigPath, + [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string systemConfigPath); [DllImport(libgit2)] public static extern IntPtr git_repository_database(RepositorySafeHandle repository); From 45b03a696537490f64c4dfbd14a1bce1c34acaf6 Mon Sep 17 00:00:00 2001 From: Emeric Fermas Date: Thu, 29 Sep 2011 21:11:49 +0200 Subject: [PATCH 28/28] Release LibGit2Sharp v0.5.0 --- CHANGELOG.md | 22 ++++++++++++++++++++++ LibGit2Sharp/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index efffbb310..6bd09f597 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ - Source code: - NuGet package: +## v0.5 + +### Additions + + - Add Repository.Index.RetrieveStatus() (#49) + - Add handling of configuration settings of the repository and retrieval of Remotes (#60) + +### Changes + + - Can now enumerate from multiple starting points + - While enumerating commits, automatically dereference objects to a commit object id + - Defer resolving of Branch.Tip, Tag.Target and Tag.Annotation + - Replace usage of ApplicationException with LibGit2Exception + - Update libgit2 binaries to libgit2/libgit2@35e9407 + +### Fixes + + - Prevent enumeration of commits from throwing when starting from a tag which points at a blob or a tree (#62) + - Prevent a branch from being removed if it's the current HEAD + - References are now being enumerated in a ordered way + - Fix Repository.Discover() implementation when no .git folder exists + ## v0.4 ### Additions diff --git a/LibGit2Sharp/Properties/AssemblyInfo.cs b/LibGit2Sharp/Properties/AssemblyInfo.cs index 2ed688a84..56202f45a 100644 --- a/LibGit2Sharp/Properties/AssemblyInfo.cs +++ b/LibGit2Sharp/Properties/AssemblyInfo.cs @@ -42,5 +42,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.4.0")] -[assembly: AssemblyFileVersion("0.4.0")] +[assembly: AssemblyVersion("0.5.0")] +[assembly: AssemblyFileVersion("0.5.0")]