As an example, here is the real output of the current prototype:
$ wstool info --fetch
workspace: /home/kruset/work/python/wstool/ws2
Localname S SCM Version (Spec) UID (Spec) URI (Spec) [http(s)://...]
--------- - ---- -------------- ----------- ---------------------------
vcstools git master (-) cf774a270811 g...@github.com:vcstools/vcstools.git
ccv-code svn trunk -r19 svn://
svn.code.sf.net/p/ccv/code/ javahg hg default (-) 6bf643f82436
bitbucket.org/aragost/javahg tomdroid bzr 324 lp:tomdroid
Regarding --fetch, actually, I believe this can be parallelized much more than using something like the number of CPUs. Since the parallel threads do mostly network / IO, CPU activity should be of no concern. Actually the same goes for the ROS installation instructions (
http://wiki.ros.org/jade/Installation/Source)
while it currently says:
$ wstool init -j8
I see no reason why this could not be changed to say 50, (unless I am missing something).
The same would go for the diff and status commands, I think.
I should still keep --fetch, since some fetches can be really slow.
There is another small problem to consider. The change would print 'C' as status flag if local and remote have changed, basically to indicate the user should sync with the remote. The problem is whether to use the remote 'origin' for that, or the remote the current branch is tracking.
The update function also currently uses 'origin' always, which we could change as well.
Conceptually, the .rosinstall files specifies what the local checkouts should be like, the URL given is to be the git remote 'origin', and it would be valid semantics to only support that remote.
However if the user went to his local repository and added a remote and tracked a branch on that remote, it is unclear conceptually what wstool should do. In the worst case 'origin' might not have the current branch, or a branch with the same name on 'origin' might be unrelated to the tracked branch on the alternative remote.
For wstool info, since we start displaying non-'origin' remotes, I could live with evaluating the status flag "C" against the tracked remote rather than origin.
For wstool update, I am not sure (in particular since now this would change historically established behavior, though undocumented).
Since I am not sure how many people will ever use branches tracking other remotes and notice the "C", the decision is probably not that dramatic.
Thoughts?