repo git: we only need to determine CurrentRevision once per session.

This commit is contained in:
Hylke Bons 2011-11-13 00:39:29 +00:00
parent 1100fa205b
commit 07b727bb72

View file

@ -30,25 +30,31 @@ namespace SparkleLib {
base (path, backend) { } base (path, backend) { }
private string identifier = null;
public override string Identifier { public override string Identifier {
get { get {
if (string.IsNullOrEmpty (this.identifier)) {
// Because git computes a hash based on content, // Because git computes a hash based on content,
// author, and timestamp; it is unique enough to // author, and timestamp; it is unique enough to
// use the hash of the first commit as an identifier // use the hash of the first commit as an identifier
// for our folder // for our folder
SparkleGit git = new SparkleGit (LocalPath, "rev-list --reverse HEAD"); SparkleGit git = new SparkleGit (LocalPath, "rev-list --reverse HEAD");
git.Start (); git.Start ();
// Reading the standard output HAS to go before // Reading the standard output HAS to go before
// WaitForExit, or it will hang forever on output > 4096 bytes // WaitForExit, or it will hang forever on output > 4096 bytes
string output = git.StandardOutput.ReadToEnd (); string output = git.StandardOutput.ReadToEnd ();
git.WaitForExit (); git.WaitForExit ();
if (output.Length < 40) if (output.Length < 40)
return null; return null;
return output.Substring (0, 40); this.identifier = output.Substring (0, 40);
}
return this.identifier;
} }
} }