예제 #1
0
 /// <param name="diff"></param>
 public Status(IndexDiff diff) : base()
 {
     this.diff = diff;
     clean     = diff.GetAdded().IsEmpty() && diff.GetChanged().IsEmpty() && diff.GetRemoved
                     ().IsEmpty() && diff.GetMissing().IsEmpty() && diff.GetModified().IsEmpty() && diff
                 .GetUntracked().IsEmpty() && diff.GetConflicting().IsEmpty();
 }
예제 #2
0
        public GitFileStatus GetFileStatusNoCache(string fileName)
        {
            //Debug.WriteLine(string.Format("===+ GetFileStatusNoCache {0}", fileName));

            var fileNameRel = GetRelativeFileNameForGit(fileName);

            IndexDiff indexDiff = new IndexDiff(repository, Constants.HEAD, new FileTreeIterator(repository));

            indexDiff.SetFilter(PathFilterGroup.CreateFromStrings(fileNameRel));
            indexDiff.Diff();

            if (indexDiff.GetModified().Count > 0)
            {
                return(GitFileStatus.Modified);
            }

            if (indexDiff.GetConflicting().Count > 0)
            {
                return(GitFileStatus.Conflict);
            }

            if (indexDiff.GetUntracked().Count > 0 || indexDiff.GetUntrackedFolders().Count > 0)
            {
                if (File.Exists(fileName))
                {
                    return(GitFileStatus.New);
                }

                return(GitFileStatus.NotControlled);
            }

            if (indexDiff.GetAdded().Count > 0)
            {
                return(GitFileStatus.Added);
            }

            if (!File.Exists(fileName))
            {
                if (indexDiff.GetMissing().Count > 0)
                {
                    return(GitFileStatus.Removed);
                }

                return(GitFileStatus.Deleted);
            }

            if (indexDiff.GetChanged().Count > 0)
            {
                return(GitFileStatus.Staged);
            }

            if (indexDiff.GetIgnoredNotInIndex().Count > 0)
            {
                return(GitFileStatus.Ignored);
            }

            return(GitFileStatus.Tracked);
        }
예제 #3
0
 /// <returns>
 /// list of files changed from HEAD to index (e.g. what you get if
 /// you modify an existing file and call 'git add ...' on it)
 /// </returns>
 public virtual ICollection <string> GetChanged()
 {
     return(Sharpen.Collections.UnmodifiableSet(diff.GetChanged()));
 }