added subtree command for "subtree add" and "subtree pull"
TfsHelper can now map multiple paths in a workspace, remotes now map all paths for all subtrees

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Fixing internals for when a remote has subtrees

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
subtree now updates the owning remote to the commit after the subtree merge
in-progress getting checkin to work, need to figure out why it wont map the workspace
checkin works for remote with subtrees

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
added "subtree split", which splits and also advances TFS refs as necessary

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
fixed issue with pull - GetPathInGitRepo was not taking prefix into account

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Master remotes now delegate to subtrees when getting local item for server item.  This fixed an issue with unshelve.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Distinct operation on FetchChangesets was causing parts of changesets to be missed when a changeset spanned multiple remote projects.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
making changes proposed in pull request

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Owning remote now uses its own history for fetching new changesets rather than relying on the subtree branches.
The owning remote had been pulling changesets multiple times because FetchChangesets() was using the wrong MaxChangesetId

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
GetPathInGitRepo was not working correctly when going directly through a subtree remote.
The prefix only needs to be applied when working from the context of the owner remote.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Used the wrong remote for the prefix in GetPathInGitRepo

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Read parent tree into the index before applying changes
Rename UpdateTfsHead and new purpose for UpdateRef
Compute base changeset Id
Unshelve based on the parent changeset Id
Fix Fetch for initial commit
Replace git command update-ref by a LibGit2Sharp call to UpdateRef()