Is it easy to port TortoiseHg to use Git instead? - windows

TortoiseHg is superior to TortoiseGit in many features.
Would be a matter of changing a few lines of code to make a new TortoiseGit based on TortoiseHg, or it requires weeks/months of development?

You can use Mercurial with Git repositories via the excellent hg-git extension, which is developed by the github folks. Any recent TortoiseHg version already has the dulwich library, you just need to clone hg-git and add a couple lines to your mercurial.ini file.
The instructions are in the TortoiseHg help under "Use with other VCS systems" .
Directions for configuring ssh can be found here. However, TortoiseHg will automatically use the plink it comes bundled with, so you don't need to worry about configuring PuTTY's plink.
Note that I've had some problems cloning large repos on XP due to file locking issues which don't seem to occur on Windows 7.

It would definitely not be just a matter of changing a few lines.
TortoiseHg is intimately written against Mercurial. It doesn't just wrap around the command line client, it integrates with the core python code.
The entire program, from bottom and up, would have to be rewritten.
It is much more constructive to give the TortoiseGit team good feedback on what you would like see improved.

Related

local versioning system (Windows)

Is there any useful tool that can store history of my folder locally like SVN does?
For example I can commit (however not to server but locally) or it can automatically track folder history.
The idea is to view history of my folder and rollback something or so (like in SVN but without server)
This is needes for Windows
Git should do the trick nicely. It is distributed so you can just use it locally without connecting to a server.
http://code.google.com/p/msysgit/
What you describes sound a whole lot like the core of distributed/decentralized version control systems (DVCS). The most popular DVCSs are Git and Mercurial (and Bazaar to some degree, though it seems an order of magnitude less widespread).
In fact, I'm doing precisely what you describe for some non-programming projects, with Mercurial (specifically TortoiseHg - the equivalent to TortoiseSVN) and it's working perfectly. Git long had a reputation for inferior Windows support and GUI tools, but I wouldn't be surprised if this has changed. I've never really used Git (wasn't ever dissatisfied with Mercurial, so I only use it for checking out the source of projects that use Git), so I can neither judge its fitness for your usecase nor recomment a frontend.
You can use even SVN (TortoiseSVN) with file:/// protocol for this task (create local repo without server)

Git Extensions usable with SVN repos?

Can Git Extensions be used without issues (or at least, with very few ones) as a SVN client? I've no problem using the command-line git-svn, but in some cases (picking lines/hunks to commit, for example) I'd rather use a GUI client.
If there are issues, I'd like to see them along with your workarounds/solutions.
As a way of an updated answer (I think this question was asked in 2011), I just started using Git Extensions for a project that uses Subversion as the repo, but I wanted to use Git locally. Learning my way into it, Git Extensions has GUI based actions for commands like SVN Fetch, SVN Rebase, and SVN Dcommit.
So, if (and I don't know because I wasn't using it in 2011) Git Extensions didn't support Subversion repos in 2011, it looks like they have that support now.
Here is an example (see red highlights at bottom):
So, to better answer your question, yes it does have support as an SVN/Git client.
git-svn creates a repository that behaves as a regular Git repository unless you are doing one of it's special operations (dcommit etc.). Thus, it is perfectly fine to interact with that repository via any external Git client as long as you use it to do things you'd normally be able to do from the command line without screwing up git-svn. (E.g. you wouldn't want to try to rebase upstream commits, GUI or not.)
(You will, of course, still have to use the command line for the special git-svn commands, unless you find a GUI that supports them.)
As alluded to by #matth, SVN support was removed from Git Extensions v3.00. However, there is a plugin (mast-eu/GitExtensions.SVN) you can install to add basic git svn commands to Git Extensions. To install it, open Plugins > Plugin Manager and browse for "gitextensions.svn".
Once installed, SVN commands are added to menu bar.
Picture of menu bar with commands

MacHg / Murky / TortoiseHg - which to use?

I started using Mercurial and chose MacHg as my GUI of choice, simply because it was the first thing I found when I googled Mercurial Mac GUI. However, I just recently discovered Murky, and TortoiseHg was recently updated for the Mac. Are there any significant reasons I should choose one over the other, or is the decision simply which application's interface I like the best?
I am the author of MacHg so of course am biased. Re Murky, it hasn't been kept up to date and it will fall over with large scale repositories when viewing history. It has to parse the whole history graph to lay it out (it uses the top level 'hg log'). Through a neat trick MacHg does this incrementally so if you have 200,000 commits MacHg doesn't need to read them all to figure out how to display them it can jump right to the place you are viewing. TortiseHg also suffers from having to read and parse the whole history although it can do this much faster than Murky (since TortiseHg uses faster lower level calls to get the data) (as reported to me by others.)
SourceTree seems like an ok solution. It is supported now commercially by Atlassian who do Bitbucket and they are a nice bunch of guys. However, as of my last test of SourceTree(1.4.3.1) it appears to be limited by the same problems. For instance one test case I use is the OpenOffice mercurial repository which is some 3Gigs with 260,000 revisions. Trying to view the graph for say revision 150,000 is really really slow in these other programs. I quit SourceTree after 5 minutes of waiting.
Also MacHg has some nicer history and rebasing tools if I do say so myself. SourceTree right now has better integration with some of the external services like Bitbucket and GitHub although it is not difficult at all to add repositories in MacHg (simple drag and drop or open, or paste in a string, etc...) Neither MacHg or SourceTree (AFAIK) have support for phases yet but I plan to add these very shortly as I am sure SourceTree will as well. TortiseHg has support for phases I think right now.
And well, I like "look and feel" of MacHg of course :)
You can't go too wrong with MacHg, or TortiseHg, or SourceTree unless you have large repositories in which case I would opt for MacHg for now.
Cheers,
Jason
This question is sort of subjective, but I've found SourceTree to be a good solution for visualizing your working copy. However, for the most part, I just use the terminal to commit/push/pull/update.
MacHg has at least straight forward instalation and Mercurial is integrated inside, what i missing is info, and there is also commandline interface, only documentation is not good enough.
I was in mac-mercurial / python / keyring configuring hell circle, i just new to setup repository for pulls without password asking (where pass is encrypted) from sh script for my build server. MacHg could be the way out, because everything is already integrated in instalation package, except mhg and chg aliases for normal (no MacHG) terminal.
I also missing some info about repository cloning progress, because i cloning 500 MB repository from bitbucket through https take me usually 2 hours. I need to debug if is problem on mercurial, ISP (it should be done in 2 minutes in regard of my connection speed) or bitbucket side.

Xcode 4 and version control - But which one?

I have a question, the answer isn't really hard technically, but I am more looking for the experience of most advanced programmers here.
So like many noobs, I am doing my version control in the crappiest way, which is to copy paste my project directory and rename it with the current date/time.
You will agree that it's a quite limited solution :P
I decided to learn version control system(s), but I am facing many choice, and I would like to know what are the best for your points of view ?
Using Xcode integrated version control (git or anything else), with organizer, cloning, commits from xcode etc. I mean totally or almost controlled by Xcode ?
Ignoring Xcode letting him think there no version control and doing it myself in command line ?
A merge of the two above ? How ?
And then :
Using git ? Github is very popular and powerful, but you must learn git, and learn it hard.
Mercurial ? It seems more friendly.
Something else ?
It would be priceless to have some feedbacks about more experienced people, so that me and many others I hope can choose their paths when facing the VCS wall :-)
Thanks a lot !!!
First: Use a VCS at all.
The rest:
Mercurial is nice, but Apple went with Git for Xcode. So if you want source control integration within the IDE, Git is the best option.
The things I miss most when working with Xcode & Mercurial are the "Modified" indicators in the source list and the integrated diff-viewer. (Which is pretty good in Xcode IMO)
The actions you perform in the Organizer are a bit limited at the moment, but you can always fall back to Terminal.app for that.
I can only recommend git. Merging is easy, I remember the days when a merge conflicts occured with SVN, it was pain, horrible pain to resolve those. You can easily start a local repository with git, especially if you are the only one developer.
Have a look at Which SCM system to use with Xcode 4 for a lone developer?.
I suggest some reading on git for the beginning:
Git in five minutes
Git Community Book
The Thing About Git
Take some time to invest in learning the basics of git, it's absolutely no rocket science to get you started on basic usage and you will benefit from it right away. Once you know the basics of git, you aren't locked into another tool wrapping git, you can use git if there are some problems with XCode. Also, git is available for several OS so the knowledge you gain about git will not go away if you move between different computers that have different OS.
Here are my best of bookmarks for git:
http://www.delicious.com/Ralphtheninja/bestof+git
I've had good success with SubVersion.

Git On Windows Without Cygwin?

Are there any native Git implementations for Windows that do not require Cygwin? I've become a fan of the TortoiseSVN client, and would really like to see a similar Git client for Windows.
Edit: I am also considering Mercurial, but would prefer to check out a few before I make a decision.
There is a TortoiseGit -- Window Explore Extenstion to Operate Git.
I started GitExtensions about a week ago. Allthough version 0.6 is a pretty complete package, I do not consider it release-ready yet. The toolset should be ready for its first stable release in a few days. There are a few things I need to fix before anyone should use it in production. The most important problem now is that the shell extension part is written in c# and therefore can cause problems. I'm rewriting this in c++ at the moment, should just take another few hours. I also want to build in some features that should prevent users from screwing up (like create a stash ontop of another stash and throwing away work or commiting changes when in the middle of a merge). I allready finished allmost all git commands I ever use (push, pull, fetch, stash, branch, commit, merge, format-patch, am, apply, etc), so it should be usable pretty soon. The toolset is written in C# (.Net 3.5 until version 0.6, later versions use .Net 2.0) except the shell extension part. There is also a visual studio plugin, but this is still pretty basic.
I have not tried TortoiseGit yet btw, but I really like TortoiseSVN!
Henk
Take a look at MSysGit. However this is just the command line git compiled with MingW instead of cygwin. This is not a GUI Tool like TortoiseSVN.
There is GitExtensions that takes the same path as Tortoise but it does not look ready yet.
Have you tried looking at the TortoiseGit page on Google Code? I believe it's the same project as the other link posted, but it's a bit friendlier. You can download the latest version as an installer from there.

Resources