ho questo metodo, dove ottengo i file dal mio ultimo impegno:ottenere i file modificati/aggiunti/rimosso da un commit nel LibGit2Sharp
static void GetFiles(Tree t, String dir = "")
{
foreach (TreeEntry treeEntry in t)
{
if (treeEntry.TargetType == TreeEntryTargetType.Tree)
{
Tree tr = repo.Lookup<Tree>(treeEntry.Target.Sha);
GetFiles(tr, dir + "/" + treeEntry.Name);
}
else
{
string caminho = dir + "/" + treeEntry.Path;
arquivos.Add(caminho);
}
}
return;
}
ho fatto uno sguardo su this question, ma io sono newbie con C# e non capisco.
ho questo repository:
c:/teste
| - octocat.txt
| - parentoctocat.txt
| - /outros
| | - octocatblue.txt
| | - octored.txt
miei ultimi commettere avere questo file modificati:
c:/teste
| - /outros
| | - octocatblue.txt <- This modified
| | - octored.txt <- This new
Con il mio metodo GetFiles
ho tutti i file come in questa stampa. Come ottenere solo i file modificati/aggiunti/rimossi?
Come posso ottenere il commit precedente e confrontare ottenendo l'albero della differenza?
Soluzione
static void CompareTrees()
{
using (repo)
{
Tree commitTree = repo.Head.Tip.Tree; // Main Tree
Tree parentCommitTree = repo.Head.Tip.Parents.Single().Tree; // Secondary Tree
var patch = repo.Diff.Compare<Patch>(parentCommitTree, commitTree); // Difference
foreach (var ptc in patch)
{
Console.WriteLine(ptc.Status +" -> "+ptc.Path); // Status -> File Path
}
}
}
Potete aiutarmi a cambiare il mio metodo 'GetFiles' per Fai questo? – Carlos