예제 #1
0
        private void GitForm_Load(object sender, EventArgs e)
        {
            string enlistmentRoot   = @"E:\JProject\GitRepository\Work";
            string workingDirectory = @"E:\JProject\GitRepository\Work\developmentdocs";
            string repoUrl          = "https://gitee.com/SkeCloud/SkeFramework.git";
            string gitBinPath       = @"D:\Program Files\Git\cmd\git.exe";

            GitBaseConfig      authConfig = new GitAuthConfig(enlistmentRoot, workingDirectory, repoUrl, gitBinPath);
            IGitCommandService command    = new GitCommandService(authConfig);
            //Result result = gitProcess.InvokeGitOutsideEnlistment("version");
            string version = command.GitVersion();

            //string error = "";
            string originUrl = "http://192.168.104.43/netProject/developmentdocs.git";
            //string username = "******";
            //string password = "******";
            //ICredentialService credentialStore = new CredentialService(authConfig);
            //credentialStore.TryStoreCredential(repoUrl,  username,  password, out error);
            //username = "";
            //password = "";
            //credentialStore.TryGetCredential(repoUrl, out username, out password, out error);

            CloneService cloneService = new CloneService(authConfig);
            Result       result       = cloneService.GitClone(originUrl, "master");

            result = cloneService.GitPull();
        }
예제 #2
0
        public ActionResult <IEnumerable <RemoteRepository> > PostRemoteRepository(RemoteRepository remoteRepository)
        {
            //先取得資料庫內已有的倉儲資料
            IEnumerable <RemoteRepository> allRemoteRepositories   = GetAllRemoteRepository().Result.Value;
            RemoteRepositoryService        remoteRepositoryService = new RemoteRepositoryService();
            //檢查是否重複新增
            var exist = remoteRepositoryService.CheckRomoteRepository(remoteRepository.RemoteRepositoryUrl, allRemoteRepositories);

            if (exist)
            {
                string error = "此倉儲已經存在";
                return(StatusCode(StatusCodes.Status405MethodNotAllowed, error));
            }
            else
            {
                //在本地端clone專案
                GitCommandService gitCommandService = new GitCommandService();
                var cloneResult = gitCommandService.ExcuteCommand(new GitCommandInfo
                {
                    Command  = "clone",
                    GitUrl   = remoteRepository.RemoteRepositoryUrl,
                    FilePath = ProjectPath.Path
                });
                //在資料庫新增此倉儲資料
                if (cloneResult.IsSuccessful)
                {
                    remoteRepository.RemoteRepositoryId = Guid.NewGuid();
                    remoteRepository.ServerPath         = cloneResult.Result + "/" + remoteRepositoryService.GetFolderName(remoteRepository.RemoteRepositoryUrl);
                    remoteRepositoryRepository.Create(remoteRepository);
                    return(CreatedAtAction(nameof(GetAllRemoteRepository), remoteRepository));
                }
                else
                {
                    //當clone失敗
                    return(StatusCode(StatusCodes.Status405MethodNotAllowed, cloneResult.ErrorMessage));
                }
                //return CreatedAtAction(nameof(GetRemoteRepository), GetRemoteRepository().Result.Value);
            }
        }