예제 #1
0
 public void ImplicitConversionToCoreRepo()
 {
     using (var repo = this.GetTrashRepository())
     {
         Assert.IsTrue(repo is Repository);
         GitSharp.Core.Repository core_repo = repo;
         Assert.IsTrue(core_repo is GitSharp.Core.Repository);
     }
 }
예제 #2
0
        private static GitDetail GetGitDetailCore(string path)
        {
            GitDetail detail = null;

            try
            {
                var repoPath = Repository.FindRepository(path);
                if (string.IsNullOrEmpty(repoPath))
                {
                    // Use local modified date when git repo is not found
                    var time = File.GetLastWriteTimeUtc(path);
                    detail = new GitDetail
                    {
                        CommitDetail = new CommitDetail
                        {
                            Author = new UserInfo
                            {
                                Date = time,
                            }
                        }
                    };
                    return(detail);
                }

                var directory = Path.GetDirectoryName(repoPath);
                var wrapper   = RepoCache.GetOrAdd(directory, s => new RepoWrapper(CoreRepository.Open(s)));
                var repo      = wrapper.Repo;
                path   = PathUtility.MakeRelativePath(directory, path);
                detail = new GitDetail();

                var walker = wrapper.Walker;

                // TODO: Disable fetching commit detail for now until GlobalContext is added
                // var commitDetail = walker.GetCommitDetail(path);
                // detail.CommitDetail = commitDetail;

                // Convert to forward slash
                detail.LocalWorkingDirectory = repo.WorkingDirectory.FullName;
                if (repo.Head == null)
                {
                    return(detail);
                }

                var branch = repo.getBranch();
                detail.RemoteRepositoryUrl = repo.Config.getString("remote", "origin", "url");
                detail.RemoteBranch        = branch;
                detail.RelativePath        = path;
                return(detail);
            }
            catch (Exception e)
            {
                Logger.LogWarning($"Have issue extracting repo detail for {path}: {e.Message}");
            }

            return(detail);
        }
예제 #3
0
        public void CreateRepository(string project)
        {
            var directory = Path.Combine(appSettings.RepositoriesDirectory.FullName, project + ".git");

            if (!Directory.Exists(directory)) {
                Directory.CreateDirectory(directory);

                using(var repository = new GitSharp.Core.Repository(new DirectoryInfo(directory))) {
                    repository.Create(true);
                }
            }
        }
예제 #4
0
        public void CreateRepository(string project)
        {
            var directory = Path.Combine(appSettings.RepositoriesDirectory.FullName, project + ".git");

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);

                using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(directory))) {
                    repository.Create(true);
                }
            }
        }
예제 #5
0
 /// <summary>
 /// Execute the command.
 /// </summary>
 public override void Execute()
 {
     using (var repo = new GitSharp.Core.Repository(new DirectoryInfo(ActualDirectory)))
     {
         var reinit = repo.Create(Bare);
         if (!Quiet)
         {
             OutputStream.WriteLine(String.Format("{0} empty Git repository in {1}", reinit ? "Reinitialized" : "Initialized", repo.Directory.FullName));
             OutputStream.Flush();
         }
         Repository = new Repository(repo);
     }
 }
예제 #6
0
		public GitRepository (VersionControlSystem vcs, FilePath localPath) : base (vcs)
		{
			string gitDir;
			if (Environment.GetEnvironmentVariable("GIT_DIT") != null)
				gitDir = Environment.GetEnvironmentVariable("GIT_DIR");
			else
				gitDir = localPath;

			if (!gitDir.EndsWith(GitSharp.Core.Constants.DOT_GIT_EXT))
				gitDir = Path.Combine(gitDir, GitSharp.Core.Constants.DOT_GIT);

			_coreRepository = new GitSharp.Core.Repository(new DirectoryInfo(gitDir));
		}
예제 #7
0
        public void CreateRepository(string rootrepository, string project)
        {
            var directory = Path.Combine(rootrepository, project + ".git");

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);

                using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(directory)))
                {
                    repository.Create(true);
                }
            }
        }
예제 #8
0
        public void CreateRepository(string directory, string project)
        {
            var repositoryDirectory = Path.Combine(directory, project + ".git");

            if (!Directory.Exists(repositoryDirectory))
            {
                Directory.CreateDirectory(repositoryDirectory);

                using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(repositoryDirectory)))
                {
                    repository.Create(true);
                }
            }
        }
예제 #9
0
        public void CreateRepository(string cat, string subcat, string project)
        {
            var directory = CombinePhysicalDir(cat, subcat, project);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);

                using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(directory)))
                {
                    repository.Create(true);
                }
            }
        }
예제 #10
0
 /// <summary>
 /// Execute the command.
 /// </summary>
 public override void Execute()
 {
     using (var repo = new GitSharp.Core.Repository(new DirectoryInfo(ActualDirectory)))
     {
         repo.Create(Bare);
         repo.Config.setBoolean("core", null, "bare", Bare);
         repo.Config.save();
         if (!Quiet)
         {
             OutputStream.WriteLine("Initialized empty Git repository in " + repo.Directory.FullName);
             OutputStream.Flush();
         }
         Repository = new Repository(repo.Directory.FullName);
     }
 }
예제 #11
0
        public ActionResult Create(RepositoryDetailModel model)
        {
            if (!User.IsInRole(Definitions.Roles.Administrator) && !UserConfigurationManager.AllowUserRepositoryCreation)
            {
                return(RedirectToAction("Unauthorized", "Home"));
            }

            if (model != null && !String.IsNullOrEmpty(model.Name))
            {
                model.Name = Regex.Replace(model.Name, @"\s", "");
            }

            if (String.IsNullOrEmpty(model.Name))
            {
                ModelState.AddModelError("Name", Resources.Repository_Create_NameFailure);
            }
            else if (ModelState.IsValid)
            {
                if (RepositoryRepository.Create(ConvertRepositoryDetailModel(model)))
                {
                    string path = Path.Combine(UserConfigurationManager.Repositories, model.Name);
                    if (!Directory.Exists(path))
                    {
                        using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(path)))
                        {
                            repository.Create(true);
                        }
                        TempData["CreateSuccess"] = true;
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        RepositoryRepository.Delete(model.Name);
                        ModelState.AddModelError("", Resources.Repository_Create_DirectoryExists);
                    }
                }
                else
                {
                    ModelState.AddModelError("", Resources.Repository_Create_Failure);
                }
            }
            PopulateEditData();
            return(View(model));
        }
        public ActionResult Create(RepositoryDetailModel model)
        {
            if (!User.IsInRole(Definitions.Roles.Administrator) && !UserConfigurationManager.AllowUserRepositoryCreation)
            {
                return RedirectToAction("Unauthorized", "Home");
            }

            if (model != null && !String.IsNullOrEmpty(model.Name))
            {
                model.Name = Regex.Replace(model.Name, @"\s", "");
            }

            if (String.IsNullOrEmpty(model.Name))
            {
                ModelState.AddModelError("Name", Resources.Repository_Create_NameFailure);
            }
            else if (ModelState.IsValid)
            {
                if (RepositoryRepository.Create(ConvertRepositoryDetailModel(model)))
                {
                    string path = Path.Combine(UserConfigurationManager.Repositories, model.Name);
                    if (!Directory.Exists(path))
                    {
                        using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(path)))
                        {
                            repository.Create(true);
                        }
                        TempData["CreateSuccess"] = true;
                        return RedirectToAction("Index");
                    }
                    else
                    {
                        RepositoryRepository.Delete(model.Name);
                        ModelState.AddModelError("", Resources.Repository_Create_DirectoryExists);
                    }
                }
                else
                {
                    ModelState.AddModelError("", Resources.Repository_Create_Failure);
                }
            }
            PopulateEditData();
            return View(model);
        }
예제 #13
0
파일: Ref.cs 프로젝트: kkl713/GitSharp
 /// <summary>
 /// Check validity of a ref name. It must not contain a character that has
 /// a special meaning in a Git object reference expression. Some other
 /// dangerous characters are also excluded.
 /// </summary>
 /// <param name="refName"></param>
 /// <returns>
 /// Returns true if <paramref name="refName"/> is a valid ref name.
 /// </returns>
 public static bool IsValidName(string refName)
 {
     return(CoreRepository.IsValidRefName(refName));
 }
예제 #14
0
 internal Repository(CoreRepository repo)
 {
     PreferredEncoding = Encoding.UTF8;
     _internal_repo = repo;
 }
예제 #15
0
        public void CreateRepository(string cat, string subcat, string project)
        {
            var directory = CombinePhysicalDir(cat, subcat, project);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);

                using (var repository = new GitSharp.Core.Repository(new DirectoryInfo(directory)))
                {
                    repository.Create(true);
                }
            }
        }
예제 #16
0
 /// <summary>
 /// Execute the command.
 /// </summary>
 public override void Execute()
 {
     using (var repo = new GitSharp.Core.Repository(new DirectoryInfo(ActualDirectory)))
     {
         var reinit = repo.Create(Bare);
         if (!Quiet)
         {
             OutputStream.WriteLine(String.Format("{0} empty Git repository in {1}", reinit ? "Reinitialized" : "Initialized", repo.Directory.FullName));
             OutputStream.Flush();
         }
         Repository = new Repository(repo);
     }
 }
예제 #17
0
 public RepoWrapper(CoreRepository repo)
 {
     Repo   = repo;
     Walker = new RepositoryWalker(repo);
 }
예제 #18
0
파일: GitUtility.cs 프로젝트: dotnet/docfx
 public RepoWrapper(CoreRepository repo)
 {
     Repo = repo;
     Walker = new RepositoryWalker(repo);
 }
예제 #19
0
 /// <summary>
 /// Execute the command.
 /// </summary>
 public override void Execute()
 {
     using (var repo = new GitSharp.Core.Repository(new DirectoryInfo(ActualDirectory)))
     {
         repo.Create(Bare);
         repo.Config.setBoolean("core", null, "bare", Bare);
         repo.Config.save();
         if (!Quiet)
         {
             OutputStream.WriteLine("Initialized empty Git repository in " + repo.Directory.FullName);
             OutputStream.Flush();
         }
         Repository = new Repository(repo.Directory.FullName);
     }
 }
예제 #20
0
 internal Repository(CoreRepository repo)
 {
     _internal_repo = repo;
 }
예제 #21
0
        /// <summary>
        /// Execute the command.
        /// </summary>
        public override void Execute()
        {
            if (GitDirectory == null)
            {
                DirectoryInfo path = null;
                GitDirectory = Git.Commands.FindGitDirectory(path, false, Bare);
            }

            if (GitRepository == null)
                GitRepository = new GitSharp.Core.Repository(Git.Commands.GitDirectory);

            GitRepository.Create(Bare);
            GitRepository.Config.setBoolean("core", null, "bare", Bare);
            GitRepository.Config.save();
            if (!Quiet)
            {
                OutputStream.WriteLine("Initialized empty Git repository in " + GitRepository.Directory.FullName);
                OutputStream.Flush();
            }
            InitializedRepository = new Repository(GitRepository.Directory.FullName);
        }
예제 #22
0
		virtual protected void Dispose(bool disposing)
		{
			if (!_disposed) {
				if (disposing) {
					if (_coreRepository != null)
						_coreRepository.Dispose();
				}

				_coreRepository = null;
				_disposed = true;
			}
		} 
예제 #23
0
 internal Repository(CoreRepository repo)
 {
     PreferredEncoding = Encoding.UTF8;
     _internal_repo    = repo;
 }