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>
The local paths for server paths ought to be controlled by the workspace mapping, not the remote doing the command.  Before subtree, these were always the same, but now that is no longer the case.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Renames now get the correct workspace path when pulling the renamed file
from TFS.
Fixed --autocrlf option on init so that it will set the autocrlf option
in the config.
Added --ignore case option to set ignorecase config setting.

These changes allow these settings to be controled when creating new repo
with git tfs init

Fixed unit tests to work with new CreateTfsRemote signature
Merge branch 'master' into autocrlf
Changed defaults for autocrlf and ignorecase.  Ignorecase now default to not set,
and autocrlf defaults to false.
Subtree remote's git-tfs ID is now applied when pulling new changesets, TfsWriter now handles determining whether to write with subtree or its owner.

This facilitates using git-tfs after having performed a subtree-split.  In the subtree's artificial revision history, the owner's git-tfs ID will not be present, so the TfsWriter will proceed as though the subtree remote were a normal remote.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>