diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..e9c05b8
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,10 @@
+language: csharp
+solution: src/GitTools.Core.sln
+sudo: false
+install:
+ # - sudo nuget update -self
+ - nuget restore src/GitTools.Core.sln
+ - nuget install NUnit.Runners -Version 3.2.1 -OutputDirectory ./src/packages
+script:
+ - xbuild ./src/GitTools.Core.sln /property:Configuration="Debug" /verbosity:detailed
+ - mono --debug --runtime=v4.0.30319 ./src/packages/NUnit.ConsoleRunner.3.2.1/tools/nunit3-console.exe ./output/debug/GitTools.Core.Tests/net45/GitTools.Core.Tests.dll
diff --git a/src/GitTools.Core.Tests/Git/GitRepositoryFactoryTests.cs b/src/GitTools.Core.Tests/Git/GitRepositoryFactoryTests.cs
index ceeec45..86b51c2 100644
--- a/src/GitTools.Core.Tests/Git/GitRepositoryFactoryTests.cs
+++ b/src/GitTools.Core.Tests/Git/GitRepositoryFactoryTests.cs
@@ -31,7 +31,7 @@ public void WorksCorrectlyWithRemoteRepository(string branchName, string expecte
{
using (var fixture = new EmptyRepositoryFixture())
{
- var expectedDynamicRepoLocation = Path.Combine(tempPath, fixture.RepositoryPath.Split('\\').Last());
+ var expectedDynamicRepoLocation = Path.Combine(tempPath, fixture.RepositoryPath.Split(Path.DirectorySeparatorChar).Last());
fixture.Repository.MakeCommits(5);
fixture.Repository.CreateFileAndCommit("TestFile.txt");
@@ -52,7 +52,7 @@ public void WorksCorrectlyWithRemoteRepository(string branchName, string expecte
dynamicRepositoryPath = gitRepository.DotGitDirectory;
gitRepository.IsDynamic.ShouldBe(true);
- gitRepository.DotGitDirectory.ShouldBe(expectedDynamicRepoLocation + "\\.git");
+ gitRepository.DotGitDirectory.ShouldBe(Path.Combine(expectedDynamicRepoLocation, ".git"));
var currentBranch = gitRepository.Repository.Head.CanonicalName;
@@ -133,7 +133,7 @@ public void PicksAnotherDirectoryNameWhenDynamicRepoFolderTaken()
{
fixture.Repository.CreateFileAndCommit("TestFile.txt");
File.Copy(Path.Combine(fixture.RepositoryPath, "TestFile.txt"), Path.Combine(tempDir, "TestFile.txt"));
- expectedDynamicRepoLocation = Path.Combine(tempPath, fixture.RepositoryPath.Split('\\').Last());
+ expectedDynamicRepoLocation = Path.Combine(tempPath, fixture.RepositoryPath.Split(Path.DirectorySeparatorChar).Last());
Directory.CreateDirectory(expectedDynamicRepoLocation);
var repositoryInfo = new RepositoryInfo
@@ -145,16 +145,16 @@ public void PicksAnotherDirectoryNameWhenDynamicRepoFolderTaken()
using (var gitRepository = GitRepositoryFactory.CreateRepository(repositoryInfo))
{
gitRepository.IsDynamic.ShouldBe(true);
- gitRepository.DotGitDirectory.ShouldBe(expectedDynamicRepoLocation + "_1\\.git");
+ gitRepository.DotGitDirectory.ShouldBe(Path.Combine(expectedDynamicRepoLocation + "_1", ".git"));
}
}
}
finally
{
- Directory.Delete(tempDir, true);
+ DeleteHelper.DeleteDirectory(tempDir, true);
if (expectedDynamicRepoLocation != null)
{
- Directory.Delete(expectedDynamicRepoLocation, true);
+ DeleteHelper.DeleteDirectory(expectedDynamicRepoLocation, true);
}
if (expectedDynamicRepoLocation != null)
diff --git a/src/GitTools.Core.Tests/Git/GitRepositoryHelperTests.cs b/src/GitTools.Core.Tests/Git/GitRepositoryHelperTests.cs
index 6391c0a..4aa9239 100644
--- a/src/GitTools.Core.Tests/Git/GitRepositoryHelperTests.cs
+++ b/src/GitTools.Core.Tests/Git/GitRepositoryHelperTests.cs
@@ -87,7 +87,7 @@ public void UpdatesCurrentBranch()
// Advance remote
fixture.Repository.Checkout("develop");
var advancedCommit = fixture.Repository.MakeACommit();
- localFixture.Repository.Network.Fetch(localFixture.Repository.Network.Remotes["origin"]);
+ Commands.Fetch((Repository)localFixture.Repository, localFixture.Repository.Network.Remotes["origin"].Name, new string[0], null, null);
localFixture.Repository.Checkout(advancedCommit.Sha);
localFixture.Repository.DumpGraph();
GitRepositoryHelper.NormalizeGitDirectory(localFixture.RepositoryPath, new AuthenticationInfo(), noFetch: false, currentBranch: "ref/heads/develop");
diff --git a/src/GitTools.Core.Tests/GitRepositoryTests.cs b/src/GitTools.Core.Tests/GitRepositoryTests.cs
index 761ae4a..5875b07 100644
--- a/src/GitTools.Core.Tests/GitRepositoryTests.cs
+++ b/src/GitTools.Core.Tests/GitRepositoryTests.cs
@@ -116,7 +116,7 @@ public void UpdatesCurrentBranch()
// Advance remote
fixture.Repository.Checkout("develop");
var advancedCommit = fixture.Repository.MakeACommit();
- localFixture.Repository.Network.Fetch(localFixture.Repository.Network.Remotes["origin"]);
+ Commands.Fetch((Repository)localFixture.Repository, localFixture.Repository.Network.Remotes["origin"].Name, new string[0], null, null);
localFixture.Repository.Checkout(advancedCommit.Sha);
GitRepositoryHelper.NormalizeGitDirectory(localFixture.RepositoryPath, new AuthenticationInfo(), noFetch: false, currentBranch: "ref/heads/develop");
diff --git a/src/GitTools.Core.Tests/GitTools.Core.Tests.csproj b/src/GitTools.Core.Tests/GitTools.Core.Tests.csproj
index a48e38e..3377c9e 100644
--- a/src/GitTools.Core.Tests/GitTools.Core.Tests.csproj
+++ b/src/GitTools.Core.Tests/GitTools.Core.Tests.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -25,7 +25,7 @@
prompt
4
true
- 1591
+ 1591,1701
pdbonly
@@ -46,12 +46,12 @@
..\packages\GitTools.Testing.1.1.0\lib\net4\GitTools.Testing.dll
True
-
- ..\packages\LibGit2Sharp.0.22.0\lib\net40\LibGit2Sharp.dll
+
+ ..\packages\LibGit2Sharp.0.23.0-pre20150419160303\lib\net40\LibGit2Sharp.dll
True
-
- ..\packages\NUnit.2.6.4\lib\nunit.framework.dll
+
+ ..\packages\NUnit.3.2.1\lib\net45\nunit.framework.dll
True
@@ -86,6 +86,7 @@
+
@@ -94,7 +95,7 @@
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
+ -->
\ No newline at end of file
diff --git a/src/GitTools.Core/GitTools.Core.NET40/packages.config b/src/GitTools.Core/GitTools.Core.NET40/packages.config
index 5522629..0e1184b 100644
--- a/src/GitTools.Core/GitTools.Core.NET40/packages.config
+++ b/src/GitTools.Core/GitTools.Core.NET40/packages.config
@@ -1,6 +1,6 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/GitTools.Core/GitTools.Core.NET45/GitTools.Core.NET45.csproj b/src/GitTools.Core/GitTools.Core.NET45/GitTools.Core.NET45.csproj
index 1185f30..6ccc06d 100644
--- a/src/GitTools.Core/GitTools.Core.NET45/GitTools.Core.NET45.csproj
+++ b/src/GitTools.Core/GitTools.Core.NET45/GitTools.Core.NET45.csproj
@@ -1,81 +1,81 @@
-
-
-
-
-
- Debug
- AnyCPU
- {66295D7C-58FD-4641-AEAB-3DF7EA8FA4D2}
- Library
- Properties
- GitTools
- GitTools.Core
- v4.5
- 512
- 5
-
-
-
-
- true
- full
- false
- ..\..\..\output\Debug\GitTools.Core\net45\
- TRACE;DEBUG
- prompt
- 4
- ..\..\..\output\Debug\GitTools.Core\net45\GitTools.Core.xml
- true
- 1591
-
-
- pdbonly
- true
- ..\..\..\output\Release\GitTools.Core\net45\
- TRACE
- prompt
- 4
- 1591
- true
- ..\..\..\output\Release\GitTools.Core\net45\GitTools.Core.xml
-
-
-
- ..\..\packages\LibGit2Sharp.0.22.0\lib\net40\LibGit2Sharp.dll
- True
-
-
-
-
-
-
-
-
-
-
-
- Properties\SolutionAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
+
+
+
+
+
+ Debug
+ AnyCPU
+ {66295D7C-58FD-4641-AEAB-3DF7EA8FA4D2}
+ Library
+ Properties
+ GitTools
+ GitTools.Core
+ v4.5
+ 512
+ 5
+
+
+
+
+ true
+ full
+ false
+ ..\..\..\output\Debug\GitTools.Core\net45\
+ TRACE;DEBUG
+ prompt
+ 4
+ ..\..\..\output\Debug\GitTools.Core\net45\GitTools.Core.xml
+ true
+ 1591,414
+
+
+ pdbonly
+ true
+ ..\..\..\output\Release\GitTools.Core\net45\
+ TRACE
+ prompt
+ 4
+ 1591
+ true
+ ..\..\..\output\Release\GitTools.Core\net45\GitTools.Core.xml
+
+
+
+ ..\..\packages\LibGit2Sharp.0.23.0-pre20150419160303\lib\net40\LibGit2Sharp.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+ Properties\SolutionAssemblyInfo.cs
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+ -->
\ No newline at end of file
diff --git a/src/GitTools.Core/GitTools.Core.NET45/packages.config b/src/GitTools.Core/GitTools.Core.NET45/packages.config
index 24beef5..c6a9e46 100644
--- a/src/GitTools.Core/GitTools.Core.NET45/packages.config
+++ b/src/GitTools.Core/GitTools.Core.NET45/packages.config
@@ -1,6 +1,6 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/GitTools.Core/GitTools.Core.Shared/Git/Extensions/LibGitExtensions.cs b/src/GitTools.Core/GitTools.Core.Shared/Git/Extensions/LibGitExtensions.cs
index 1991b57..9ac05c0 100644
--- a/src/GitTools.Core/GitTools.Core.Shared/Git/Extensions/LibGitExtensions.cs
+++ b/src/GitTools.Core/GitTools.Core.Shared/Git/Extensions/LibGitExtensions.cs
@@ -33,7 +33,7 @@ public static Branch FindBranch(this IRepository repository, string branchName)
static bool IsSameBranch(Branch branch, Branch b)
{
- return (b.IsRemote ? b.FriendlyName.Replace(b.Remote.Name + "/", string.Empty) : b.FriendlyName) != branch.FriendlyName;
+ return (b.IsRemote ? b.FriendlyName.Replace(b.RemoteName + "/", string.Empty) : b.FriendlyName) != branch.FriendlyName;
}
public static IEnumerable GetBranchesContainingCommit([NotNull] this Commit commit, IRepository repository, IList branches, bool onlyTrackedBranches)
@@ -99,12 +99,12 @@ public static string GetRepositoryDirectory(this IRepository repository, bool om
{
var gitDirectory = repository.Info.Path;
- gitDirectory = gitDirectory.TrimEnd('\\');
+ gitDirectory = gitDirectory.TrimEnd(Path.DirectorySeparatorChar);
if (omitGitPostFix && gitDirectory.EndsWith(".git"))
{
gitDirectory = gitDirectory.Substring(0, gitDirectory.Length - ".git".Length);
- gitDirectory = gitDirectory.TrimEnd('\\');
+ gitDirectory = gitDirectory.TrimEnd(Path.DirectorySeparatorChar);
}
return gitDirectory;
diff --git a/src/GitTools.Core/GitTools.Core.Shared/Git/Helpers/GitRepositoryHelper.cs b/src/GitTools.Core/GitTools.Core.Shared/Git/Helpers/GitRepositoryHelper.cs
index c91d3b5..1f1fa14 100644
--- a/src/GitTools.Core/GitTools.Core.Shared/Git/Helpers/GitRepositoryHelper.cs
+++ b/src/GitTools.Core/GitTools.Core.Shared/Git/Helpers/GitRepositoryHelper.cs
@@ -36,7 +36,7 @@ public static void NormalizeGitDirectory(string gitDirectory, AuthenticationInfo
Log.Info(string.Format("Fetching from remote '{0}' using the following refspecs: {1}.",
remote.Name, string.Join(", ", remote.FetchRefSpecs.Select(r => r.Specification))));
var fetchOptions = BuildFetchOptions(authentication.Username, authentication.Password);
- repo.Network.Fetch(remote, fetchOptions);
+ Commands.Fetch(repo, remote.Name, new string[0], fetchOptions, null);
}
EnsureLocalBranchExistsForCurrentBranch(repo, currentBranch);
@@ -143,8 +143,8 @@ static void AddMissingRefSpecs(Repository repo, Remote remote)
var allBranchesFetchRefSpec = string.Format("+refs/heads/*:refs/remotes/{0}/*", remote.Name);
Log.Info(string.Format("Adding refspec: {0}", allBranchesFetchRefSpec));
-
- repo.Network.Remotes.Update(remote,
+
+ repo.Network.Remotes.Update(remote.Name,
r => r.FetchRefSpecs.Add(allBranchesFetchRefSpec));
}
diff --git a/src/GitTools.Core/GitTools.Core.Shared/Helpers/ProcessHelper.cs b/src/GitTools.Core/GitTools.Core.Shared/Helpers/ProcessHelper.cs
index af17bd6..a4662d5 100644
--- a/src/GitTools.Core/GitTools.Core.Shared/Helpers/ProcessHelper.cs
+++ b/src/GitTools.Core/GitTools.Core.Shared/Helpers/ProcessHelper.cs
@@ -132,14 +132,32 @@ public enum ErrorModes
public struct ChangeErrorMode : IDisposable
{
- int oldMode;
+ readonly int oldMode;
public ChangeErrorMode(ErrorModes mode)
{
- oldMode = SetErrorMode((int)mode);
+ try
+ {
+ oldMode = SetErrorMode((int)mode);
+ }
+ catch (EntryPointNotFoundException)
+ {
+ oldMode = (int)mode;
+ }
}
- void IDisposable.Dispose() { SetErrorMode(oldMode); }
+
+ void IDisposable.Dispose()
+ {
+ try
+ {
+ SetErrorMode(oldMode);
+ }
+ catch (EntryPointNotFoundException)
+ {
+ // NOTE: Mono doesn't support DllImport("kernel32.dll") and its SetErrorMode method, obviously. @asbjornu
+ }
+ }
[DllImport("kernel32.dll")]
static extern int SetErrorMode(int newMode);
diff --git a/src/GitTools.Core/GitTools.Core.Shared/IO/Helpers/DeleteHelper.cs b/src/GitTools.Core/GitTools.Core.Shared/IO/Helpers/DeleteHelper.cs
index dd88e1f..57638f5 100644
--- a/src/GitTools.Core/GitTools.Core.Shared/IO/Helpers/DeleteHelper.cs
+++ b/src/GitTools.Core/GitTools.Core.Shared/IO/Helpers/DeleteHelper.cs
@@ -1,5 +1,6 @@
namespace GitTools.IO
{
+ using System;
using System.IO;
public static class DeleteHelper
@@ -11,17 +12,50 @@ public static void DeleteGitRepository(string directory)
return;
}
- foreach (var fileName in Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories))
+ try
{
- var fileInfo = new FileInfo(fileName)
+ foreach (var fileName in Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories))
{
- IsReadOnly = false
- };
+ var fileInfo = new FileInfo(fileName)
+ {
+ IsReadOnly = false
+ };
- fileInfo.Delete();
+ try
+ {
+ fileInfo.Delete();
+ }
+ catch (FileNotFoundException)
+ {
+ }
+ catch (UnauthorizedAccessException)
+ {
+ }
+ }
+
+ Directory.Delete(directory, true);
+ }
+ catch (DirectoryNotFoundException)
+ {
}
+ catch (UnauthorizedAccessException)
+ {
+ }
+ }
+
- Directory.Delete(directory, true);
+ public static void DeleteDirectory(string directory, bool recursive)
+ {
+ try
+ {
+ Directory.Delete(directory, recursive);
+ }
+ catch (DirectoryNotFoundException)
+ {
+ }
+ catch (UnauthorizedAccessException)
+ {
+ }
}
}
}
\ No newline at end of file