本文整理汇总了C#中NGit.Dircache.DirCacheEntry.SetObjectId方法的典型用法代码示例。如果您正苦于以下问题:C# DirCacheEntry.SetObjectId方法的具体用法?C# DirCacheEntry.SetObjectId怎么用?C# DirCacheEntry.SetObjectId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NGit.Dircache.DirCacheEntry
的用法示例。
在下文中一共展示了DirCacheEntry.SetObjectId方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestNonRecursiveFiltering
public virtual void TestNonRecursiveFiltering()
{
ObjectInserter odi = db.NewObjectInserter();
ObjectId aSth = odi.Insert(Constants.OBJ_BLOB, Sharpen.Runtime.GetBytesForString(
"a.sth"));
ObjectId aTxt = odi.Insert(Constants.OBJ_BLOB, Sharpen.Runtime.GetBytesForString(
"a.txt"));
DirCache dc = db.ReadDirCache();
DirCacheBuilder builder = dc.Builder();
DirCacheEntry aSthEntry = new DirCacheEntry("a.sth");
aSthEntry.FileMode = FileMode.REGULAR_FILE;
aSthEntry.SetObjectId(aSth);
DirCacheEntry aTxtEntry = new DirCacheEntry("a.txt");
aTxtEntry.FileMode = FileMode.REGULAR_FILE;
aTxtEntry.SetObjectId(aTxt);
builder.Add(aSthEntry);
builder.Add(aTxtEntry);
builder.Finish();
ObjectId treeId = dc.WriteTree(odi);
odi.Flush();
TreeWalk tw = new TreeWalk(db);
tw.Filter = PathSuffixFilter.Create(".txt");
tw.AddTree(treeId);
IList<string> paths = new List<string>();
while (tw.Next())
{
paths.AddItem(tw.PathString);
}
IList<string> expected = new List<string>();
expected.AddItem("a.txt");
NUnit.Framework.Assert.AreEqual(expected, paths);
}
示例2: MakeEntry
/// <exception cref="System.Exception"></exception>
private DirCacheEntry MakeEntry(string path, FileMode mode)
{
DirCacheEntry ent = new DirCacheEntry(path);
ent.FileMode = mode;
ent.SetObjectId(new ObjectInserter.Formatter().IdFor(Constants.OBJ_BLOB, Constants
.Encode(path)));
return ent;
}
示例3: Apply
public override void Apply(DirCacheEntry ent)
{
ent.FileMode = FileMode.REGULAR_FILE;
ent.SetObjectId(id);
ent.IsUpdateNeeded = false;
}
示例4: Apply
public override void Apply(DirCacheEntry ent)
{
ent.FileMode = FileMode.REGULAR_FILE;
ent.SetObjectId(gitmodulesBlob);
}
示例5: AddEntryToBuilder
/// <exception cref="System.IO.IOException"></exception>
private DirCacheEntry AddEntryToBuilder(string path, FilePath file, ObjectInserter
newObjectInserter, DirCacheBuilder builder, int stage)
{
FileInputStream inputStream = new FileInputStream(file);
ObjectId id = newObjectInserter.Insert(Constants.OBJ_BLOB, file.Length(), inputStream
);
inputStream.Close();
DirCacheEntry entry = new DirCacheEntry(path, stage);
entry.SetObjectId(id);
entry.FileMode = FileMode.REGULAR_FILE;
entry.LastModified = file.LastModified();
entry.SetLength((int)file.Length());
builder.Add(entry);
return entry;
}
示例6: CopyMetaDataHelper
private void CopyMetaDataHelper(bool keepStage)
{
DirCacheEntry e = new DirCacheEntry("some/path", DirCacheEntry.STAGE_2);
e.IsAssumeValid = false;
e.SetCreationTime(2L);
e.FileMode = FileMode.EXECUTABLE_FILE;
e.LastModified = 3L;
e.SetLength(100L);
e.SetObjectId(ObjectId.FromString("0123456789012345678901234567890123456789"));
e.IsUpdateNeeded = true;
DirCacheEntry f = new DirCacheEntry("someother/path", DirCacheEntry.STAGE_1);
f.IsAssumeValid = true;
f.SetCreationTime(10L);
f.FileMode = FileMode.SYMLINK;
f.LastModified = 20L;
f.SetLength(100000000L);
f.SetObjectId(ObjectId.FromString("1234567890123456789012345678901234567890"));
f.IsUpdateNeeded = true;
e.CopyMetaData(f, keepStage);
NUnit.Framework.Assert.IsTrue(e.IsAssumeValid);
NUnit.Framework.Assert.AreEqual(10L, e.GetCreationTime());
NUnit.Framework.Assert.AreEqual(ObjectId.FromString("1234567890123456789012345678901234567890"
), e.GetObjectId());
NUnit.Framework.Assert.AreEqual(FileMode.SYMLINK, e.FileMode);
NUnit.Framework.Assert.AreEqual(20L, e.LastModified);
NUnit.Framework.Assert.AreEqual(100000000L, e.Length);
if (keepStage)
{
NUnit.Framework.Assert.AreEqual(DirCacheEntry.STAGE_2, e.Stage);
}
else
{
NUnit.Framework.Assert.AreEqual(DirCacheEntry.STAGE_1, e.Stage);
}
NUnit.Framework.Assert.IsTrue(e.IsUpdateNeeded);
NUnit.Framework.Assert.AreEqual("some/path", e.PathString);
}
示例7: ResetIndex
/// <summary>Resets the index to represent exactly some filesystem content.</summary>
/// <remarks>
/// Resets the index to represent exactly some filesystem content. E.g. the
/// following call will replace the index with the working tree content:
/// <p>
/// <code>resetIndex(new FileSystemIterator(db))</code>
/// <p>
/// This method can be used by testcases which first prepare a new commit
/// somewhere in the filesystem (e.g. in the working-tree) and then want to
/// have an index which matches their prepared content.
/// </remarks>
/// <param name="treeItr">
/// a
/// <see cref="NGit.Treewalk.FileTreeIterator">NGit.Treewalk.FileTreeIterator</see>
/// which determines which files should
/// go into the new index
/// </param>
/// <exception cref="System.IO.FileNotFoundException">System.IO.FileNotFoundException
/// </exception>
/// <exception cref="System.IO.IOException">System.IO.IOException</exception>
protected internal virtual void ResetIndex(FileTreeIterator treeItr)
{
ObjectInserter inserter = db.NewObjectInserter();
DirCacheBuilder builder = db.LockDirCache().Builder();
DirCacheEntry dce;
while (!treeItr.Eof)
{
long len = treeItr.GetEntryLength();
dce = new DirCacheEntry(treeItr.EntryPathString);
dce.FileMode = treeItr.EntryFileMode;
dce.LastModified = treeItr.GetEntryLastModified();
dce.SetLength((int)len);
FileInputStream @in = new FileInputStream(treeItr.GetEntryFile());
dce.SetObjectId(inserter.Insert(Constants.OBJ_BLOB, len, @in));
@in.Close();
builder.Add(dce);
treeItr.Next(1);
}
builder.Commit();
inserter.Flush();
inserter.Release();
}
示例8: Add
/// <summary>adds a new path with the specified stage to the index builder</summary>
/// <param name="path"></param>
/// <param name="p"></param>
/// <param name="stage"></param>
/// <returns>the entry which was added to the index</returns>
private DirCacheEntry Add(byte[] path, CanonicalTreeParser p, int stage)
{
if (p != null && !p.EntryFileMode.Equals(FileMode.TREE))
{
DirCacheEntry e = new DirCacheEntry(path, stage);
e.FileMode = p.EntryFileMode;
e.SetObjectId(p.EntryObjectId);
builder.Add(e);
return e;
}
return null;
}
示例9: Update
private void Update(string path, ObjectId mId, FileMode mode)
{
if (!FileMode.TREE.Equals(mode))
{
updated.Put(path, mId);
DirCacheEntry entry = new DirCacheEntry(path, DirCacheEntry.STAGE_0);
entry.SetObjectId(mId);
entry.FileMode = mode;
builder.Add(entry);
}
}
示例10: Conflict
/// <summary>A conflict is detected - add the three different stages to the index</summary>
/// <param name="path">the path of the conflicting entry</param>
/// <param name="e">the previous index entry</param>
/// <param name="h">the first tree you want to merge (the HEAD)</param>
/// <param name="m">the second tree you want to merge</param>
private void Conflict(string path, DirCacheEntry e, AbstractTreeIterator h, AbstractTreeIterator
m)
{
conflicts.AddItem(path);
DirCacheEntry entry;
if (e != null)
{
entry = new DirCacheEntry(e.PathString, DirCacheEntry.STAGE_1);
entry.CopyMetaData(e, true);
builder.Add(entry);
}
if (h != null && !FileMode.TREE.Equals(h.EntryFileMode))
{
entry = new DirCacheEntry(h.EntryPathString, DirCacheEntry.STAGE_2);
entry.FileMode = h.EntryFileMode;
entry.SetObjectId(h.EntryObjectId);
builder.Add(entry);
}
if (m != null && !FileMode.TREE.Equals(m.EntryFileMode))
{
entry = new DirCacheEntry(m.EntryPathString, DirCacheEntry.STAGE_3);
entry.FileMode = m.EntryFileMode;
entry.SetObjectId(m.EntryObjectId);
builder.Add(entry);
}
}
示例11: Apply
public override void Apply(DirCacheEntry ent)
{
ent.FileMode = FileMode.REGULAR_FILE;
ent.SetLength(1);
ent.SetObjectId(ObjectId.ZeroId);
}
示例12: MakeFile
/// <exception cref="System.Exception"></exception>
private DirCacheEntry MakeFile(string path)
{
DirCacheEntry ent = new DirCacheEntry(path);
ent.FileMode = FileMode.REGULAR_FILE;
ent.SetObjectId(new ObjectInserter.Formatter().IdFor(Constants.OBJ_BLOB, Constants
.Encode(path)));
return ent;
}
示例13: Apply
public override void Apply(DirCacheEntry ent)
{
ent.FileMode = FileMode.EXECUTABLE_FILE;
ent.SetObjectId(walk.GetObjectId(0));
}
示例14: Keep
/// <summary>
/// adds a entry to the index builder which is a copy of the specified
/// DirCacheEntry
/// </summary>
/// <param name="e">the entry which should be copied</param>
/// <returns>the entry which was added to the index</returns>
private DirCacheEntry Keep(DirCacheEntry e)
{
DirCacheEntry newEntry = new DirCacheEntry(e.PathString, e.Stage);
newEntry.FileMode = e.FileMode;
newEntry.SetObjectId(e.GetObjectId());
newEntry.LastModified = e.LastModified;
newEntry.SetLength(e.Length);
builder.Add(newEntry);
return newEntry;
}
示例15: Revert
public override void Revert (FilePath[] localPaths, bool recurse, IProgressMonitor monitor)
{
foreach (var group in localPaths.GroupBy (f => GetRepository (f))) {
var repository = group.Key;
var files = group.ToArray ();
var c = GetHeadCommit (repository);
RevTree tree = c != null ? c.Tree : null;
List<FilePath> changedFiles = new List<FilePath> ();
List<FilePath> removedFiles = new List<FilePath> ();
monitor.BeginTask (GettextCatalog.GetString ("Reverting files"), 3);
monitor.BeginStepTask (GettextCatalog.GetString ("Reverting files"), files.Length, 2);
DirCache dc = repository.LockDirCache ();
DirCacheBuilder builder = dc.Builder ();
try {
HashSet<string> entriesToRemove = new HashSet<string> ();
HashSet<string> foldersToRemove = new HashSet<string> ();
// Add the new entries
foreach (FilePath fp in files) {
string p = repository.ToGitPath (fp);
// Register entries to be removed from the index
if (Directory.Exists (fp))
foldersToRemove.Add (p);
else
entriesToRemove.Add (p);
TreeWalk tw = tree != null ? TreeWalk.ForPath (repository, p, tree) : null;
if (tw == null) {
// Removed from the index
}
else {
// Add new entries
TreeWalk r;
if (tw.IsSubtree) {
// It's a directory. Make sure we remove existing index entries of this directory
foldersToRemove.Add (p);
// We have to iterate through all folder files. We need a new iterator since the
// existing rw is not recursive
r = new NGit.Treewalk.TreeWalk(repository);
r.Reset (tree);
r.Filter = PathFilterGroup.CreateFromStrings(new string[]{p});
r.Recursive = true;
r.Next ();
} else {
r = tw;
}
do {
// There can be more than one entry if reverting a whole directory
string rpath = repository.FromGitPath (r.PathString);
DirCacheEntry e = new DirCacheEntry (r.PathString);
e.SetObjectId (r.GetObjectId (0));
e.FileMode = r.GetFileMode (0);
if (!Directory.Exists (Path.GetDirectoryName (rpath)))
Directory.CreateDirectory (rpath);
DirCacheCheckout.CheckoutEntry (repository, rpath, e);
builder.Add (e);
changedFiles.Add (rpath);
} while (r.Next ());
}
monitor.Step (1);
}
// Add entries we want to keep
int count = dc.GetEntryCount ();
for (int n=0; n<count; n++) {
DirCacheEntry e = dc.GetEntry (n);
string path = e.PathString;
if (!entriesToRemove.Contains (path) && !foldersToRemove.Any (f => IsSubpath (f,path)))
builder.Add (e);
}
builder.Commit ();
}
catch {
dc.Unlock ();
throw;
}
monitor.EndTask ();
monitor.BeginTask (null, files.Length);
foreach (FilePath p in changedFiles) {
FileService.NotifyFileChanged (p);
monitor.Step (1);
}
foreach (FilePath p in removedFiles) {
FileService.NotifyFileRemoved (p);
monitor.Step (1);
}
monitor.EndTask ();
}
//.........这里部分代码省略.........