private TreeDefinition RetrieveOrBuildTreeDefinition(string treeName, bool shouldOverWrite) { TreeDefinition td; if (unwrappedTrees.TryGetValue(treeName, out td)) { return(td); } TreeEntryDefinition treeEntryDefinition; bool hasAnEntryBeenFound = entries.TryGetValue(treeName, out treeEntryDefinition); if (hasAnEntryBeenFound) { switch (treeEntryDefinition.TargetType) { case TreeEntryTargetType.Tree: td = From(treeEntryDefinition.Target as Tree); break; case TreeEntryTargetType.Blob: case TreeEntryTargetType.GitLink: if (shouldOverWrite) { td = new TreeDefinition(); break; } return(null); default: throw new NotImplementedException(); } } else { if (!shouldOverWrite) { return(null); } td = new TreeDefinition(); } entries[treeName] = new TransientTreeTreeEntryDefinition(); unwrappedTrees.Add(treeName, td); return(td); }
private TreeDefinition RetrieveOrBuildTreeDefinition(string treeName, bool shouldOverWrite) { TreeDefinition td; if (unwrappedTrees.TryGetValue(treeName, out td)) { return td; } TreeEntryDefinition treeEntryDefinition; bool hasAnEntryBeenFound = entries.TryGetValue(treeName, out treeEntryDefinition); if (hasAnEntryBeenFound) { switch (treeEntryDefinition.TargetType) { case TreeEntryTargetType.Tree: td = From(treeEntryDefinition.Target as Tree); break; case TreeEntryTargetType.Blob: case TreeEntryTargetType.GitLink: if (shouldOverWrite) { td = new TreeDefinition(); break; } return null; default: throw new NotImplementedException(); } } else { if (!shouldOverWrite) { return null; } td = new TreeDefinition(); } entries[treeName] = new TransientTreeTreeEntryDefinition(); unwrappedTrees.Add(treeName, td); return td; }