Skip to content

Instantly share code, notes, and snippets.

@jagregory
Created October 10, 2009 22:56
Show Gist options
  • Select an option

  • Save jagregory/207219 to your computer and use it in GitHub Desktop.

Select an option

Save jagregory/207219 to your computer and use it in GitHub Desktop.
public class DiffTreePort
{
private bool recursive;
public void AddTree(AbstractTreeIterator c)
{
trees.Add(c);
}
private List<AbstractTreeIterator> trees = new List<AbstractTreeIterator>();
private TreeFilter pathFilter = TreeFilter.ALL;
public void run(Repository db)
{
TreeWalk walk = new TreeWalk(db);
walk.reset();
walk.Recursive = recursive;
foreach (AbstractTreeIterator i in trees)
walk.addTree(i);
walk.setFilter(AndTreeFilter.create(TreeFilter.ANY_DIFF, pathFilter));
int nTree = walk.getTreeCount();
while (walk.next())
{
for (int i = 1; i < nTree; i++)
Console.Write(':');
for (int i = 0; i < nTree; i++)
{
FileMode m = walk.getFileMode(i);
String s = m.ToString();
for (int pad = 6 - s.Length; pad > 0; pad--)
Console.Write('0');
Console.Write(s);
Console.Write(' ');
}
for (int i = 0; i < nTree; i++)
{
var name = walk.getObjectId(i).Name;
Console.Write(name);
Console.Write(' ');
}
char chg = 'M';
if (nTree == 2)
{
int m0 = walk.getRawMode(0);
int m1 = walk.getRawMode(1);
if (m0 == 0 && m1 != 0)
chg = 'A';
else if (m0 != 0 && m1 == 0)
chg = 'D';
else if (m0 != m1 && walk.idEqual(0, 1))
chg = 'T';
}
Console.Write(chg);
var path = walk.getPathString();
Console.Write('\t');
Console.Write(path);
Console.WriteLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment