internal void StartCommitChanges(GitJobParameters p) { Thread th = new Thread(new ParameterizedThreadStart(CommitChanges)); th.Start(p); }
private void Execute(JobList jobq) { List<string> tochange = new List<string>(); List<string> toadd = new List<string>(); List<string> toremove = new List<string>(); GitJobParameters p = new GitJobParameters(); p.tochange = tochange; p.toadd = toadd; p.toremove = toremove; p.gitpath = this.path; Job j; if (jobq[0].Action == ActionType.Added || jobq[0].Action == ActionType.Changed || jobq[0].Action == ActionType.Removed) { // git add/rm are packed into a series and git commit/push are executed after executing the git add/rm Jobs. while(jobq.Count > 0) { j = jobq[0]; jobq.RemoveAt(0); switch (j.Action) { case ActionType.Changed: p.tochange.Add(j.FullPath); break; case ActionType.Added: p.toadd.Add(j.FullPath); break; case ActionType.Removed: p.toremove.Add(j.FullPath); break; } } this.git.StartCommitChanges(p); } else { // git status/clone/push is executed alone. p.tarpath = jobq[0].FullPath; this.git.StartGitActions(p, jobq[0].Action); } }
internal void StartGitActions(GitJobParameters p, ActionType action) { Thread th = null; switch (action) { case ActionType.Clone: th = new Thread(new ParameterizedThreadStart(CloneFromRemote)); break; case ActionType.Pull: th = new Thread(new ParameterizedThreadStart(PullFromRemote)); break; case ActionType.Status: th = new Thread(new ParameterizedThreadStart(StatusAndRefresh)); break; } th.Start(p); }