And yes, if there is a way to improve communication with TFS, that
would be outstanding. It seems to me that the most likely improvement
would come from changing Fetch from walking the changeset in code to
using `tfs get` (or equivalent) and taking a snapshot of the result.
If you're working remotely via a VPN, performance is just going to be
bad, especially for the initial clone. (That's a big part of why
quick-clone exists.) I haven't spent much time with it, but
quick-clone seems about as fast as a fresh `tfs get`, which is really
about the best I'd expect. (It might not be the best possible, but it
seems like it must be close.)
Another idea would be a command to convert a TFS workspace into a git
repository, maybe `git tfs hijack`. It could do something like `tfpt
treeclean` or `tfpt scorch` and clean up the working directory and use
it as the quick-clone basis and remove the TFS workspace. The thought
here is that you'll probably already have a workspace, though I don't
know that I personally would want to do this.
Yet another idea is to make quick-clone do a `tf get` and then `git
add .` instead of the current API-based walk.
> --
> You received this message because you are subscribed to the Google Groups
> "git-tfs-dev" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/git-tfs-dev/-/AbnA8Dj2v4kJ.
> To post to this group, send email to git-t...@googlegroups.com.
> To unsubscribe from this group, send email to
> git-tfs-dev...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/git-tfs-dev?hl=en.
>
The disparity could depend on lots of factors: if every TFS web
service call was as fast as a local in-memory call, (a) there probably
would be no difference between the performance of git-tfs and tfs and
(b) tfs would be a little bit more reasonable of an alternative to
git. ;) Yeah, so I could see the performance of git-tfs being impacted
by many factors: network speed/latency/etc, server latency (i.e. the
capabilities of the TFS app and db servers). The workspace.get method
is apparently well-tuned, and it would be nice to do the same for
git-tfs.
It would be interesting to try a workspace.get approach... when I
started git-tfs, I had thought about doing that or the current
implementation, and the current implementation was closer to what
git-svn did, so it was easier to make it work.
One thing that would be more possible with a workspace.get-based
approach to fetching is that we could do a very selective clone. Like,
`git tfs clone blah --sample=1w` and just pull basically a summary git
commit for each week's worth of work in tfs. It might make a `git tfs
clone` a bit more sane for a gigantic repo. But, that would be a pain
for branching. Hm. So, maybe not so good.
Anyway, it also removes some of the fussiness of tracking file names
and such... just set up a workspace, let tfs do its get for each
changeset we're trying to fetch, then (effectively) snapshot into a
commit.
> --
> You received this message because you are subscribed to the Google Groups
> "git-tfs-dev" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/git-tfs-dev/-/QZL1tWOVP68J.