views:

287

answers:

7

I remember 2 events in SVN history: TortoiseSVN got usable and VisualSVN got usable.

The result of the first: "We will never ever want to use SVN with command line". The result of the second: "We will never ever use SVN & MSVS without VisualSVN"

please understand this correct - we do use SVN command line if we need something that can not be accomplished with Tortoise and we do use Tortoise if something we need is not available from MSVS. But otherwise (99.9% of the time) all you need is right at your hand in the IDE.

Now I do understand and like the benefits of distributed source control, but there is simply no way I'm going to hunt files renamed in the IDE and executing manually hg rename in order not to loose history ("delete + create new" instead of "rename" = no history). Nor I consider blame or file revert to be an action that can not be executed directly on file selected in solution explorer or open for editing. With VisualSVN all of that, and much more, just works!

Conceptual benefits of DSCM are great, but they are no good if simple, daily used features are not available from the IDE!

The question: is there a distributed source control with plug-in that integrates in to MSVS as smooth as VisualSVN does? Git Extensions and VisualHg are no where close to that point at the moment and VisualSVN team refuses to create VisualGit with:

"We can consider this option only if Git changes its license from GPL to BSD/Apache style to allow derivative commercial work."

P.S. A must from IDE:

  • File status in solution tree. Parent i.e. folder/project/solution is marked as edited if any child is edited.
  • contextual update, commit, history, blame, revert as a one click action from solution explorer/open file with keyboard shortcuts available!
  • Automatic tracking and handling of file rename / drag and drop / new file creation.
  • An indicator (yellow line) of what is yet not committed in edited file that does not disappear after the file is closed and reopened.

Not much is it?

UPDATE:

1) Tested HgSccPackage yesterday. It sure has more needed features available right from IDE, and they do respect current context i.e. selected/open file etc. Unfortunately it's solution tree status currently is buggy and does not support folder status.

2) Git Source Control Provider mentioned in a reply same as VisualHG lacks at least 2 things:

  • for some reason they have tiny amount of contextual actions (blame/annotate for example is NA)
  • it seams they both are solidly based on MSVS source control API (unlike VisualSVN) and hence do not provide solution folders status (same thing with HgSccPackage).

3) Charles Bailey pointed out, that git handles renames anyway. Yep, it does. No need for any of IDE support here (Not sure about mercurial). So git MSVS support only lacks good contextual, one click actions and proper tree status support (well there is also a yellow line, but lets say it's very nice to have, but not a must at the moment).

A: 

Have you looked at VisualHG as a plugin to Visual studio for Mercurial?
I'm not a visual studio user so I cannot comment on features.

Ton
OP already has a verdict: "no where close to that point (smooth as VisualSVN) at the moment".
Geoffrey Zheng
yes, looked at it and nope, it's not what I would expect it to be. It's a shame that it lacks so little, but that little is 95% of every day used features :(
Dandikas
Sorry, missed it in the question.
Ton
A: 

Uh, have you looked at Team Foundation Server, the MS supported source control tool + project management solution? The 2K10 version is pretty solid.

Visionary Software Solutions
It's not distributed
Chad
No I did not, but I'm really interested in distributed source control.
Dandikas
+2  A: 

About the Visual Studio integration for GitExtensions. "We" did not add the integration you are looking for because it doesn't work well with the Git workflow. Sinse there are no file-locking or renaming issues, you can just forget about source control until you commit your changes.

Having that said: there is a plugin for Visual Studio that does what you are asking for. You can find it here: http://visualstudiogallery.msdn.microsoft.com/en-us/63a7e40d-4d71-4fbb-a23b-d262124b8f4c This plugin for Visual Studio adds a Source Control Provider for Git and Git Extensions to Visual Studio.

I'm not sure about TortoiseGit, but as fas as GitExtensions there are no plans for adding a Source Control Provider for Visual Studio. This is not a technical or time problem, its already build in the "scc" branch. The workflows that Visual Studio uses are just different then what a typical DVCS uses. If you find a Source Control Provider very important, maybe its better to stick with SVN since this might suits your workflow better.

Henk
This is really an interesting answer for at least 2 reasons. First is obviously that "we". That means Henk took at least some part in GitExtension development (no offense - I really do not know is it some part or a big part - respect in any case). The second reason is not so obvious, so first I'll say, that I did try the tool you mentioned. To me any source control is not only the thing, that keeps project source safe and helps developers to integrate their changes in one big "whole" i.e. the working code. That is by far a default. I mean no source control is good if this is not covered ;) ...
Dandikas
CONTINUING ... Another major part of any source control is that it serves as "development history" tool. That is actually the major part for me. ... And now you say: "you can just forget about source control until you commit your changes." ... Now This is where I stop and say NO. No, I can not forget about source control until I need to commit! Sorry to say, but I use blame/annotate more times per day, than I use commit and update put together. And I do not work in ideal world where developer works on a single feature at a time, so I do need to see what files were changed for that 5minutes fix
Dandikas
CONTINUING So for me possibility to commit a quick fix while a bigger feature is in progress is a must. It's not that I like or encourage this kind of work, but things happen, and I do not think it is wise to try to say to management "well we are not going to do it anymore on burning bugs because it doesn't work well with the Git workflow". ... do I need to give example, why getting file changes history is important or should I also just "forget about it until I commit my changes"? ... Try to understand - I do not see anything, I'll repeat ANYTHING that would be missing from git command line..
Dandikas
CONTINUING ... Git command line have everything that is needed to accomplish the daily use cases. Getting file history/blame/annotate/get changed files list/commit some files while not comiting other - no prob! All of that is available and not without a reason! But to me available from command line is not "available" that is expected these days! These days I expect all of that to be "one click" available from IDE. This is the kind of availability I am waiting from git/mercurial for more than a year and a half now. ... hope you do not get this to personal or offensive - this is just my view :)
Dandikas
@Dandikas - I believe Henk is the lead devleoper of Git Extensions. And he's right. Git just doesn't lend itself to this sort of workflow - it's not a replacement for SVN, it's just different. If you can open up to a different way of working, it's really a lot easier, but does require change in how you work yourself.
Paddy
@Paddy With all do respect, I can not imagine any workflow, where developer does not need to use blame/annotate. If so, why not have it available right from the file that needs to be "blamed"? This is available from GitExtension UI! That's good! Try to understand, I can work with git extension or tortoise git and they do fit my workflow! They are good! Thumbs up! But why do I need to have 3 steps instead of 1!? From IDE -> Open GitExtension -> find file (that is already found! i.e. open or selected in solution explorer) -> click annotate. Why not just click annotate while file is open???
Dandikas
@Dandikas - Maybe we are just working in a different fashion. I rarely use blame and never use annotate.
Paddy
+2  A: 

I've found VS integration for Git pointless. The only time you need to interact with Git is when you want to stage, commit and push to the remote repository.

This is done when you are finished coding and the code compiles and passes tests etc ... It is at this point I use git via the command line or TortiseGit.

I like how the Git work flow, allows me to work without knowing there is source control, and only comes into play when I need to share my work, or commit at a safe point.

We've been using Git and TortiseGit at my company for a few months now, and even the VisualSVN users don't miss it.

Hibri
+1 use the tools correctly and you'll learn a lot in the process. Not sure why OP needs visual integration...
Sam Post
Sorry, there is no way I can agree to this statement: "The only time you need to interact with Git is when you want to stage, commit and push to the remote repository." Extended answer is in comments to Henk post.
Dandikas
A: 

My answer: No.

2 weeks spent on researching and testing various tools and plug-ins. Resume: at the moment of writing there is not a single free distributed source control that integrates in to MSVS as smooth as SVN with VisualSVN does.

SVN is not distributed, and VisualSVN is not free, this is why I was in search for something different.

2 weeks of research is not a minor investigation for me, this is the only reason why I post this answer - hope it will be useful for other out there "on the edge of change".

Also do note, that I review all of my questions, and answers to them - whenever someone prove me wrong i.e. when there will be decent tools available, I will remove this answer, and will mark a better one as "the answer".


P.S. the future is in Distributed Version Control systems. If you must select one today - just pick any. You will not miss much anyway. Today I would probably go for Git. But that's really only me.

Dandikas
A: 

Well, that's actually what we've tried to solve with Plastic SCM. While it is not just for "windows users" and actually not "just for Visual Studio", we've to admit VStudio is our primary IDE down here. http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html

pablo