示例#1
0
		public SvnRevision (Repository repo, int rev, DateTime time, string author, string message, RevisionPath[] changedFiles)
			: base (repo, time, author, message)
		{
			this.ChangedFiles = changedFiles;
			Rev = rev;
			Kind = 1;
		}
		public GitRevision(
			Repository repository, 
			string revision, 
			DateTime time, 
			string author, 
			string message, 
			RevisionPath[] changedFiles) : base(repository, time, author, message, changedFiles)
		{
			_commitId = revision;
		}
示例#3
0
		public GitRevision (Repository repo, string rev, DateTime time, string author, string message, RevisionPath[] changedFiles)
			: base (repo, time, author, message, changedFiles)
		{
			this.rev = rev;
		}
示例#4
0
		internal GitRevision GetPreviousRevisionFor (GitRevision revision)
		{
			StringReader sr = RunCommand ("log -1 --name-status --date=iso " + revision + "^", true);
			string rev = ReadWithPrefix (sr, "commit ");
			string author = ReadWithPrefix  (sr, "Author: ");
			string dateStr = ReadWithPrefix (sr, "Date:   ");
			DateTime date;
			DateTime.TryParse (dateStr, out date);
			
			List<RevisionPath> paths = new List<RevisionPath> ();
			bool readingComment = true;
			StringBuilder message = new StringBuilder ();
			StringBuilder interline = new StringBuilder ();
			
			string line;
			while ((line = sr.ReadLine ()) != null) {
				if (line.Length > 2 && ("ADM".IndexOf (line[0]) != -1) && line [1] == '\t') {
					readingComment = false;
					string file = line.Substring (2);
					RevisionAction ra;
					switch (line[0]) {
					case 'A': ra = RevisionAction.Add; break;
					case 'D': ra = RevisionAction.Delete; break;
					default: ra = RevisionAction.Modify; break;
					}
					RevisionPath p = new RevisionPath (path.Combine (file), ra, null);
					paths.Add (p);
				}
				else if (readingComment) {
					if (IsEmptyLine (line))
						interline.AppendLine (line);
					else {
						message.Append (interline);
						message.AppendLine (line);
						interline = new StringBuilder ();
					}
				}
				else
					break;
			}
			
			return new GitRevision (this, rev, date, author, message.ToString ().Trim ('\n','\r'), paths.ToArray ());
		}
示例#5
0
		protected override RevisionPath[] OnGetRevisionChanges (Revision revision)
		{
			GitRevision rev = (GitRevision) revision;
			if (rev.Commit == null)
				return new RevisionPath [0];
			
			List<RevisionPath> paths = new List<RevisionPath> ();
			
			foreach (Change change in GitUtil.GetCommitChanges (repo, rev.Commit)) {
				FilePath cpath = FromGitPath (change.Path);
				if (!rev.FileForChanges.IsNull && cpath != rev.FileForChanges && !cpath.IsChildPathOf (rev.FileForChanges))
					continue;
				RevisionAction ra;
				switch (change.ChangeType) {
				case ChangeType.Added:
					ra = RevisionAction.Add;
					break;
				case ChangeType.Deleted:
					ra = RevisionAction.Delete;
					break;
				default:
					ra = RevisionAction.Modify;
					break;
				}
				RevisionPath p = new RevisionPath (cpath, ra, null);
				paths.Add (p);
			}
			return paths.ToArray ();
		}
		public override Revision[] GetHistory (FilePath localFile, Revision since)
		{
			List<Revision> revs = new List<Revision> ();
			
			RevWalk walk = new RevWalk (repo);
			var hc = GetHeadCommit ();
			if (hc == null)
				return new GitRevision [0];
			walk.MarkStart (hc);
			
			foreach (RevCommit commit in walk) {
				List<RevisionPath> paths = new List<RevisionPath> ();
				foreach (Change change in GitUtil.GetCommitChanges (repo, commit)) {
					FilePath cpath = FromGitPath (change.Path);
					if (cpath != localFile && !cpath.IsChildPathOf (localFile))
						continue;
					RevisionAction ra;
					switch (change.ChangeType) {
					case ChangeType.Added:
						ra = RevisionAction.Add;
						break;
					case ChangeType.Deleted:
						ra = RevisionAction.Delete;
						break;
					default:
						ra = RevisionAction.Modify;
						break;
					}
					RevisionPath p = new RevisionPath (cpath, ra, null);
					paths.Add (p);
				}
				if (paths.Count > 0) {
					PersonIdent author = commit.GetAuthorIdent ();
					GitRevision rev = new GitRevision (this, commit.Id.Name, author.GetWhen().ToLocalTime (), author.GetName (), commit.GetFullMessage (), paths.ToArray ());
					rev.Email = author.GetEmailAddress ();
					rev.ShortMessage = commit.GetShortMessage ();
					revs.Add (rev);
				}
			}
			return revs.ToArray ();
		}
 public BazaarRevision(Repository repo, string rev, DateTime time, string author, string message, RevisionPath[] changedFiles)
     : base(repo, time, author, message)
 {
     Rev = rev;
 }