コード例 #1
0
ファイル: Program.cs プロジェクト: vaginessa/GitClicky
        static void Main(string[] args)
        {
            IGitRepositoryService gitRepositoryService = new GitRepositoryService();

            var inputPath = args[0];

            Console.WriteLine("Input: {0}".FormatWith(inputPath));

            try
            {
                Console.WriteLine("Fetch path: {0}".FormatWith(gitRepositoryService.GetFetchRemoteForPath(inputPath)));
            }
            catch (NotInGitRepositoryException)
            {
                Console.WriteLine("The specified path does not exist within a Git repository");
            }
            catch (RepositoryHasNoRemotesException)
            {
                Console.WriteLine("The repository doesn't have any remotes configured");
            }
            catch (UnknownRemoteProviderException e)
            {
                Console.WriteLine("The repository's remote provider is unknown: {0}".FormatWith(e.Message));
            }
        }
コード例 #2
0
 public GitController(
     GitRepositoryService repoService,
     IOptions <GitSettings> gitOptions
     )
     : base(gitOptions, repoService)
 {
 }
コード例 #3
0
 public FileViewController(
     IOptions <GitSettings> gitOptions,
     GitRepositoryService repoService
     )
     : base(gitOptions, repoService)
 {
 }
コード例 #4
0
ファイル: GitController.cs プロジェクト: maikebing/Giti
        public GitController(
            GitRepositoryService repoService

            )
            : base(repoService)
        {
        }
コード例 #5
0
        protected GitControllerBase(

            GitRepositoryService repoService
            )
        {
            _repoService = repoService;
        }
コード例 #6
0
 protected GitControllerBase(
     IOptions <GitSettings> gitOptions,
     GitRepositoryService repoService
     )
 {
     _gitOptions  = gitOptions;
     _repoService = repoService;
 }
コード例 #7
0
 public HomeController(
     IOptions <GitSettings> gitOptions,
     GitRepositoryService repoService,
     IRepository <Repository> repository
     )
     : base(gitOptions, repoService)
 {
     _repository = repository;
 }
コード例 #8
0
        public void GetLastLocalCommitDateTest()
        {
            var target = new GitRepositoryService();

            var repositoryInfo = new RepositoryConnectionInfo
            {
                BranchName     = "master",
                LocalDirectory = @"D:\Projects\Sideline\Orchestra"
            };

            var date = target.GetLastLocalCommitDate(repositoryInfo);
        }
コード例 #9
0
 public RepoOMatic(MigrationEngine me)
 {
     migrationEngine = me;
     sourceRepoService = me.Source.Collection.GetService<GitRepositoryService>();
     sourceRepos = sourceRepoService.QueryRepositories(me.Source.Config.Project);
     //////////////////////////////////////////////////
     targetRepoService = me.Target.Collection.GetService<GitRepositoryService>();
     targetRepos = targetRepoService.QueryRepositories(me.Target.Config.Project);
     gitWits = new List<string>
         {
             "Branch",
             "Fixed in Commit",
             "Pull Request"
         };
 }
コード例 #10
0
 public GitRepositoryEnricher(IMigrationEngine me)
 {
     migrationEngine   = me;
     sourceRepoService = me.Source.GetService <GitRepositoryService>();
     sourceRepos       = sourceRepoService.QueryRepositories(me.Source.Config.Project);
     allSourceRepos    = sourceRepoService.QueryRepositories("");
     //////////////////////////////////////////////////
     targetRepoService = me.Target.GetService <GitRepositoryService>();
     targetRepos       = targetRepoService.QueryRepositories(me.Target.Config.Project);
     allTargetRepos    = targetRepoService.QueryRepositories("");
     gitWits           = new List <string>
     {
         "Branch",
         "Fixed in Commit",
         "Pull Request",
         "Fixed in Changeset"        //TFVC
     };
 }
コード例 #11
0
        /// <summary>
        /// Downloads the latest version of file from TFS-Git server
        /// </summary>
        /// <param name="fullPath"></param>
        /// <returns></returns>
        public string DownloadLatestVersion(string fullPath)
        {
            GitRepositoryService grs = new GitRepositoryService();

            grs.Initialize(TeamColl);

            var gitRepo = grs.QueryRepositories(SettingTFS.TeamProjectName).FirstOrDefault(x => x.Name == SettingTFS.RepoName);

            if (gitRepo == null)
            {
                throw new Exception("No repo found");
            }

            var tmpUrl = string.Format(urlLatestFileVersion, TeamColl.Uri, gitRepo.Id, fullPath);

            var rawJson = HttpGet(tmpUrl);

            return(rawJson);
        }
コード例 #12
0
        public TfsGitRepositoryEnricher(IMigrationEngine engine, ILogger <TfsGitRepositoryEnricher> logger) : base(engine, logger)
        {
            _Engine = engine ?? throw new ArgumentNullException(nameof(engine));
            _Logger = logger ?? throw new ArgumentNullException(nameof(logger));

            sourceRepoService = engine.Source.GetService <GitRepositoryService>();
            sourceRepos       = sourceRepoService.QueryRepositories(engine.Source.Config.AsTeamProjectConfig().Project);
            allSourceRepos    = sourceRepoService.QueryRepositories("");
            //////////////////////////////////////////////////
            targetRepoService = engine.Target.GetService <GitRepositoryService>();
            targetRepos       = targetRepoService.QueryRepositories(engine.Target.Config.AsTeamProjectConfig().Project);
            allTargetRepos    = targetRepoService.QueryRepositories("");
            gitWits           = new List <string>
            {
                "Branch",
                "Fixed in Commit",
                "Pull Request",
                "Fixed in Changeset"        //TFVC
            };
        }
コード例 #13
0
        /// <summary>
        /// !!! DANGER : if you are using "pull request" and "push" together there is a catch.
        /// WebApi finds changes between "pull request"s or "push"es.
        /// Because of this, first you make "pull request" then "push", at last "pull request"; api brings last"pull request" and "push" changes together.
        /// Like they pulled at the same time.
        /// </summary>
        /// <returns></returns>
        public List <TFSFileState> GitPendingChangeFiles()
        {
            var filesChanged = new List <TFSFileState>();

            GitRepositoryService grs = new GitRepositoryService();

            grs.Initialize(TeamColl);

            var gitRepo = grs.QueryRepositories(SettingTFS.TeamProjectName).FirstOrDefault(x => x.Name == SettingTFS.RepoName);

            if (gitRepo == null)
            {
                return(new List <TFSFileState>());
            }

            string tmpUrl  = string.Format(urlFindCommitsFiles, TeamColl.Uri, gitRepo.Id, SettingTFS.BuildSourceVersion);
            string rawJson = HttpGet(tmpUrl);

            if (string.IsNullOrEmpty(rawJson))
            {
                return(new List <TFSFileState>());
            }

            var gitCommitData = JsonConvert.DeserializeObject <GitCommitRef>(rawJson);
            var isExist       = gitCommitData?.Changes?.Any() ?? false;

            if (!isExist)
            {
                return(new List <TFSFileState>());
            }

            foreach (var item in gitCommitData.Changes)
            {
                var tmpState = item.ChangeType.ToSourceControlFileState();

                filesChanged.Add(new TFSFileState(item.Item.Path, tmpState));
            }

            return(filesChanged);
        }
コード例 #14
0
        protected void Connect()
        {
            string tpcUrl = TfsUrl + "/" + TeamProjectCollection + "/";

            if (!string.IsNullOrWhiteSpace(this.Username))
            {
                Console.WriteLine("Authenticating as '{0}'", this.Username);

                // source http://blogs.msdn.com/b/buckh/archive/2013/01/07/how-to-connect-to-tf-service-without-a-prompt-for-liveid-credentials.aspx
                NetworkCredential    netCred   = new NetworkCredential(this.Username, this.Password);
                BasicAuthCredential  basicCred = new BasicAuthCredential(netCred);
                TfsClientCredentials tfsCred   = new TfsClientCredentials(basicCred);
                tfsCred.AllowInteractive = false;

                tpc = new TfsTeamProjectCollection(new Uri(tpcUrl), tfsCred);
            }
            else
            {
                tpc = new TfsTeamProjectCollection(new Uri(tpcUrl));
            }

            tpc.EnsureAuthenticated();

            gitSvc = tpc.GetService <GitRepositoryService>();

            if (!string.IsNullOrWhiteSpace(this.Username))
            {
                NetworkCredential netCred = new NetworkCredential(this.Username, this.Password);
                var cred = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(netCred));
                gitWebApiClient = new GitHttpClient(new Uri(tpcUrl), cred);
            }
            else
            {
                var cred = new VssCredentials(true);
                gitWebApiClient = new GitHttpClient(new Uri(tpcUrl), cred);
            }
        }
コード例 #15
0
        /// <summary>
        /// Sample method on how to extracts the git version control permissions.
        /// </summary>
        /// <param name="server">The server.</param>
        /// <param name="groups">The groups.</param>
        /// <param name="userIdentity">The user identity.</param>
        /// <param name="projectSecurityToken">The project security token.</param>
        /// <param name="identityManagementService">The identityManagementService.</param>
        /// <param name="vcs">The VCS.</param>
        /// <param name="gitService">The git service.</param>
        /// <returns>List of Permissions</returns>
        private static List <GitPermission> ExtractGitVersionControlPermissions(
            ISecurityService server,
            List <string> groups,
            TeamFoundationIdentity userIdentity,
            string projectSecurityToken,
            IIdentityManagementService identityManagementService,
            VersionControlServer vcs,
            GitRepositoryService gitService)
        {
            Console.WriteLine("== Extract Git Version Control Permissions ==");
            SecurityNamespace     gitVersionControlSecurityNamespace = server.GetSecurityNamespace(Helpers.GetSecurityNamespaceId(PermissionScope.GitSourceControl, server));
            IList <GitRepository> gitProjectRepoService = gitService.QueryRepositories(projectSecurityToken);

            var groupsIdentities = new List <TeamFoundationIdentity>(groups.Count);

            foreach (string group in groups)
            {
                TeamFoundationIdentity groupIdentity = identityManagementService.ReadIdentity(
                    IdentitySearchFactor.Identifier, group, MembershipQuery.None,
                    ReadIdentityOptions.IncludeReadFromSource);
                groupsIdentities.Add(groupIdentity);
            }

            var results = new List <GitPermission>();

            foreach (GitRepository repo in gitProjectRepoService)
            {
                string primaryBranch = (repo.DefaultBranch ?? "(no default branch)").StartsWith("refs/heads/") ?
                                       repo.DefaultBranch.Substring(11) :
                                       repo.DefaultBranch;

                Console.WriteLine("  -- Repo: {0} branch {1}", repo.Name, primaryBranch);

                // Repository Security Token is repoV2/TeamProjectId/RepositoryId
                string repoIdToken = string.Format("repoV2{0}{1}{2}{3}",
                                                   gitVersionControlSecurityNamespace.Description.SeparatorValue,
                                                   repo.ProjectReference.Id,
                                                   gitVersionControlSecurityNamespace.Description.SeparatorValue,
                                                   repo.Id);

                AccessControlList versionControlAccessList =
                    gitVersionControlSecurityNamespace.QueryAccessControlList(
                        repoIdToken,
                        new List <IdentityDescriptor> {
                    userIdentity.Descriptor
                },
                        true);

                var gitVersionControlPermissions = new List <Permission>();
                foreach (AccessControlEntry ace in versionControlAccessList.AccessControlEntries)
                {
                    foreach (AclAndName aclAndName in Helpers.EnumerateAcls(ace, false))
                    {
                        if (aclAndName.Acl != 0)
                        {
                            string versionControlPermissions = ((EnumerationsList.GitPermissions)aclAndName.Acl).ToString();
                            gitVersionControlPermissions.AddRange(
                                Helpers.GetActionDetailsByName(versionControlPermissions, aclAndName.Name,
                                                               PermissionScope.GitSourceControl));
                        }
                    }
                }

                foreach (TeamFoundationIdentity groupIdentity in groupsIdentities)
                {
                    AccessControlList groupAccessList =
                        gitVersionControlSecurityNamespace.QueryAccessControlList(
                            repoIdToken,
                            new List <IdentityDescriptor> {
                        groupIdentity.Descriptor
                    },
                            true);

                    foreach (AccessControlEntry ace in groupAccessList.AccessControlEntries)
                    {
                        foreach (AclAndName aclAndName in Helpers.EnumerateAcls(ace, true))
                        {
                            if (aclAndName.Acl != 0)
                            {
                                string versionControlPermissions = ((EnumerationsList.GitPermissions)aclAndName.Acl).ToString();
                                gitVersionControlPermissions.AddRange(
                                    Helpers.GetActionDetailsByName(versionControlPermissions, aclAndName.Name,
                                                                   PermissionScope.GitSourceControl));
                            }
                        }
                    }
                }

                List <Permission> modifiedPermissions = Helpers.RemoveDuplicatePermissionsAndCombineGroups(gitVersionControlPermissions);
                results.AddRange(modifiedPermissions.Select(perm => new GitPermission(perm, repo.Name, primaryBranch)));
            }

            return(results);
        }
コード例 #16
0
 public FileViewController(
     GitRepositoryService repoService
     )
     : base(repoService)
 {
 }