I'm developing with Eclipse and managing my repositories with git and gitorious. Until now, I used git on the command line. I've looked around for a way to integrate git into Eclipse and found EGit. This has also been asked on SO two years ago. But as EGit uses JGit, a git clone written in Java, I'm concerned about its compatibility with the original git.
I know that EGit is missing some (maybe a lot) of git's advanced features, so I would use EGit for daily basic uses like commits, checkouts, pulls and pushes, branching, etc, and use git for more advanced - but less frequent - tasks. Any experiences? I won't use EGit if there is any chance that my repos get broken just because git and EGit didn't agree on how to manage them!
Another question: Are there alternatives to EGit? I couldn't find any.
As one of the developers of EGit and JGit, all I can say is that the projects are still in beta (incubation in eclipse.org terms). We are evolving quickly and have managed to pump out a release every 3 months for the past year. We recently shipped 0.10.1 and are planning to push a 0.11 release at the end of February. Our goal is to ship a 1.0 for the major Eclipse Indigo release in June which would be usable by the whole Eclipse community. This is required because eclipse.org itself is moving to Git.
One of the best things you can do with EGit is to checkout the user guide which aims to help people use EGit in the way it was intended, See Eclipse Wiki
If you have any questions, you can always use our mailing list or bugzilla. More information can be found in our extensive contributor guide.
On a side note, SmartGit under the covers uses JGit to handle the operations. Gerrit the popular code review tool (used by the Android dev team and others) uses JGit under the covers too. JGit has ~1800 tests to ensure compatibility with Git and even has some developers that work on CGit too. In the beginning we had a bit of trouble with compatibility but that is no longer the case with our extensive test suite. The project has developers from SAP, Google, Red Hat and other companies.
I know you are looking for a way to integrate into Eclipse, but in my experience trying to do this does not work. Even if EGit is perfectly compatible with your Git repo's it is still buggy as hell. I use NetBeans now which has Mercurial built in and optional Git plugins, they are still useless!
If you want a nice visual way to work with Git then try SmartGit or Tower. I have used both a little and heard great things about them, but mainly stick to CLI + GitX.
Related
A friend and I want to work on the same project. Is there a way that we can work on the same project at the same time and have the files stored on Google Drive or Dropbox?
You really want to use a version control system, like mercurial or git. There are lots of hosting options for both of these, like github, bitbucket and others.
Edit: As was observed in a comment, you may also take a look at Subversion or CVS. Whichever works best in your case.
As for Eclipse integration, there are solutions for most systems :
http://javaforge.com/project/HGE for Mercurial
http://www.eclipse.org/egit/ for Git
http://www.eclipse.org/subversive/ for SVN
You can Setup a remote git Server or use bitbucket
In Addition with egit for eclipse :)
I Have done this yesterday and it works pretty well
//again too slow :P
we will be doing a project for our Object Oriented Software Eng. class, and our team consists 4 people, including myself. Our groups were made random, so I do not know their level of skills. Maybe they have never heard of version control. I am looking for a system that will allow us to work together. I have used SVN and Git for a very little time. However, I am not very confident with them. Can you suggest a nice and easy to use system that is compatible with Eclipse or NetBeans IDE? Simplicity is the most important thing and I do not know how to use Git or SVN for a project more than one people. (I have only used them individually)
You need to have some kind of Source control.
If you have used SVN/GIT in your own projects using it in a team is just as easy. SVN is easiest, however even though it is a little harder I would go for mercurial with tortoiseHG, hosted for free at bitbucket.
It will Integrate into the windows UI
Its distributed which will make things smoother and reduce merge issues
You get free private hosting
You can use tortoise SVN or VSS (Visual source safe) to maintain project among multiple peoples. In both tool, you can maintain local copy of project in your PC and commit your changes on server when it completes.
Version control tools comparision : http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
Have a look at Mercurial. It is easy to use and portable (it's written in Python). If you use Windows, you will probably find TortoiseHG useful too, as it provides Explorer extensions for mostly all functions Mercurial supports. There are also many sites that provide free project hosting for this VCS, such as BitBucket. And here is a nice tutorial about Mercurial.
EDIT: I once found a Mercurial plug-in for Eclipse. You can find it by searching in Help > Install Software in Eclipse.
I have used Dropbox as source control in a project once, it worked ok you can also revert to old version of your files which is great, we didn`t have to work in the same files so there was no conflict.
But now that I have gotten used to svn and mercurial I would never use something else. I too would recommend using mercurial with tortoiseHg and a bitbucket acount. I have started using it for smaller project as well, I simply did a repository with all of them in it so I have at least a backup and I am able to revert to an old version if need be.
My recommandation is to avoid sharing a folder using tools like dropbox and use a real source control like mercurial hosted on bitbucket (free for project with less than 4 users).
I'd say using SVN or GIT is a bit over kill for a school project which is likely to not last that long.
Another option would be to use something like DropBox.
What were the reason for chosing Mercurial as a basis of FogCreek Kiln, a source control management system with tightly integrated code review, and FogBugz integration?
Why Mercurial, and not other (distributed) version control system, like Bazaar, Git or Monotone, or creating own version control system like Fossil (distributed software configuration management, including bug tracking and wiki) did?
What were features that make FogCreek choose Mercurial as Kiln engine?
Here's an answer from one of the Kiln developers.
It provides real branching.
It's easy to use.
Windows support is very good.
It's fast.
It's powerful.
It's easily extensible.
Check out the full details here. They explained themselves quite thoroughly.
Original answer (Nov. 2009, GitHub has only 1 years, Git only 4)
I really do not know, but I would venture "better Windows support", Windows being potentially the main platform for most of their client base.
Git is still too much a "unix/linux" product, with a "hopeful" Windows support through mSysGit.
Just read the tone of some of the MSysGitHerald articles, like the ninth one:
For a very long time, msysGit was pushed forward by the gang formed of Hannes, Steffen, Sebastian Schuberth and myself [Johannes Schindelin]. At some stage I got so frustrated that I stopped working on msysGit altogether. The reason is simple: it was no more fun. Way too many people asked for fixes or enhancements, and none of them offered contributions of their own. As I am not a Windows person (being a happy Linux user since 1994), the work on mSysGit was not rewarding enough for me to continue. So I stopped.
But in the meantime, things have changed.
We got contributions by ...
That does not inspire a great deal of confidence when it comes to push forward that tool to your IT boss. I am very happy with Git for a personal usage, and very grateful from the hard work of all mSysGit contributors, but in a big company, I would have a hard time making Git the default DVCS tool adopted by our Windows developers.
Both because of the learning curve, but mainly because the support level is not there yet.
That is only a personal opinion, and if you have a different experience deploying Git successfully, more power to you.
Mercurial being the closest DVCS to Git, and based on portable Python scripts (and not linux/unix-based sh scripts), it may be a pragmatic choice.
Update 2018, seven years later: yes, the Windows support for Git is now a reality.
And Microsoft has its entire Windows codebase into one (giant) Git repository: See "The largest Git repo on the planet": 3.5M files, 300GB, 4,000 engineers producing 1,760 daily “lab builds” across 440 branches in addition to thousands of pull request validation builds.
But this is with the addition of GVFS (Git Virtual FileSystem), which allows to dynamically download only the portions you need based on what you use.
This is not yet in Git native, although its integration has begun last Dec. 2017, with the implementation of a narrow/partial cloning.
Kiln advertises Git support as well:
Kiln, our best-in-class DVCS hosting solution, supports Git as well as Mercurial! GitHub is great. FogBugz is great. What could
be even better? How about integrating them! FogBugz can be notified by
GitHub Web Hooks whenever an incoming changeset comment mentions a
case.
When I looked at DVCS system I like Mercurial because.
The Mercurial developers seems to care about Microsoft Windows users.
The Mercurial developers do not thinks of Microsoft Windows users as being Unix users that are forced to use Windows.
Unlike a lot of open source developers, the Mercurial developers don't seem to hate Microsoft for making money.
Maybe the Kiln developers thought the same...
(All the main DVCS systems are good enough, otherwise other factors would come into play more)
This answer so now clearly out of date as Microsoft owns github and git is now in very common use on Windows.
I can't speak for FogCreek, but I know when I was choosing which DVCS to use many people commented that git does not work well on Windows (unless it's run in cygwin). Since FogBugz is designed to run on either Windows or a Linux systems (from what I understand--I am not a user myself) having an extra layer (cygwin) to run git may have been the determining factor there. I don't know much about Bazaar or Monotone, so I can't offer any feedback there.
I think the issue of hg vs. git is a red herring, as the OS support issue alone is a major difference. The real question is why hg rather than bzr, as these two are very similar and hg developers themselves consider bzr to be their real competition and vice-versa. Sun conducted an extensive evaluation of both when it came to choosing a DVCS for OpenSolaris and OpenJDK. One would like to know what was the process used for picking hg at FogCreek. All we got so far by way of answers (apart from the OS support issue) are generalities.
So now they add also git:
One of the biggest new features is Kiln Harmony, which lets you
operate on Kiln repositories using either Git or Mercurial. So you can
push changes to a Kiln repo using Git and then pull them using
Mercurial. This means that you never have to decide whether you want
to use Git or Mercurial.
I am planning to bring some "peace" (you may call it organization) to the personal work (small projects, etc.) I do at home.
I would like to use a SCM and an issue tracker which can capture the commits and show them as changesets etc. automatically.
Note that all the above applications are supposed to be for personal usage so would prefer something from FOSS and also they need to be ultra lightweight in terms of the system requirements.
What do you recommend?
EDIT: Following are some of my doubts/concerns:
Git with GitHub looks good. But I am not very comfortable with making my code base public on GitHub. What do you say?
Does GitHub provide an issue tracker? I mean, can I open up an issue on GitHub provided issue tracker and commit against that issue?
Can I have a local SCM (on my laptop) and use some remote issue tracker like FogBugz? But I just don't understand how could a remote issue tracker capture my commits. Any idea?
UPDATE:
I finally went with Mercurial and BitBucket. Working awesome so far!
I would recommend Git with GitHub
I like and use Redmine with the basecamp theme. It supports a couple of version control systems like git, mercurial, svn, ...
For projects that I want to publish I use bitbucket.org and github.com.
I never tried, but would look into git in combination with ticgit ..
If you're going free personal, I'd recommend SVN and Trac. The two integrate very well together with a little bit of configuration. They're also both pretty lightweight.
If you're willing to spend a bit or are working on an open source project, I'd recommend Atlassian's tools Jira and FishEye. I've worked with them as well and have found integration to be very good. They can be a bit hefty though, and I've found the FishEye client to be very AJAX heavy to the point of performance issues.
If you can trust that you'll always be working on your personal projects near your source control server (or if you're doing it all on the same box) then I'd suggest Subversion. I feel the barrier for entry is lower for it than distributed tools like git or mercurial.
I'd look into VisualSVN for your server.
If you're running it all on one box, you can use TortoiseSVN's built-in Repo feature.
My favorite clients are TortoiseSVN and AnkhSVN (if you need VS integration.)
For an issue tracker, a simple story board might be better than a piece of software.
I use org-mode in emacs to track personal projects.
I've used various SCMs for personal work. For really small stuff I still sometimes just run ci -l somefile to start versioning with RCS, because I'm old-school that way. I've happily used Darcs for personal stuff, and I maintain that Darcs is still the easiest to use DVCS out there. These days if I think I'm going to be Open-Sourcing the project I'm likely to use Git, just because that makes putting it on GitHub straightforward.
I also like to use personal projects as an opportunity to experiment with other SCMs that I'm not familiar with, so I'll probably be versioning projects with Bazaar and Mercurial in the future.
In the past, I've used CVS for source control, but I've recently started converting most of my personal projects to use git. However, I don't like the way git works with Visual Studio, so I've been switching to Subversion for my C# projects.
For issue tracking, I've been using Redmine which supports all three SCM methods, though it does better with SVN and git.
Lightweight issue tracking, well, you could use the tracker in drupal, if you consider LAMP easy enough to set up.
If you want to be self-contained, git and mercurial are things you can use without setting up a server at all.
Of course, there's good-old-RCS.
I would have to second using the Subversion and Trac combination. I have this environment setup at work and use it for a distributed team of developers, and I have this environment setup at home and use it for my personal projects. They are open source, very adaptable to your workflow and Trac Hacks has pretty much any mod / hack / plugin you could think of in one form or another.
For very personal things (let's say single-user-mode) I use Tomboy (a simple note-taking application) and Getting Things Gnome. If the project becomes more complex, then I used to switch to Trac with svn or hg backend. For next projects, I'm going to try redmine: seems more clean and hipe than trac (:))
I have just begun working on a project which uses Mercurial as a version control system, and I need some basic tips on how to use this. Please use this question to give some introductory tips on this technology.
The official Mercurial site
Especially, I am looking for tips on the best programs to use and the best techniques to use (branches, in and out-checking etc. I need to learn the best-practices!)
I know you already have the Mercurial site but the resource most useful to me was the Mercurial book. It's an excellent overview of the program and how to use it.
I found the best way to learn Mercurial was just to use it on a project. I imported into Mercurial a project I had exported from subversion and did some regular development with it. I made sure to clone the repository for different changesets so that I could get used to the merging and updating. I haven't learned all of the advanced uses but I'm now on a pretty firm footing with it and haven't switched back to Subversion yet.
A lot of projects have different techniques for commit workflow. Some have changes pushed from the developers, like centralized systems, and some will pull the changes from contributors (Linux, for example). It's hard to generalize too much without knowing the process for your project.
This is how I do my development:
Centralized tree on a file share or http, called project-trunk or project that is the definitive project version
A clean tree on my system that I clone from the remote repository and use to push back to the repository. I then clone from this tree for my changes. I call this tree project-local
Clone the project-local tree for each of my changes: eg. project-addusers, project-141, etc.
After I am finished with the commits to a tree, I then push the changes to the project-local repository
Finally, push the changes in the project-local to project-trunk
I have the clean project-local tree because then I can push all the changesets back to the trunk at one time, which is helpful if there is a group of related changes that need to push back together.
As for tools, it depends on your platform. I just use the vanilla command line tool. Coming from TortoiseSVN, it was a bit of a change to go to the command line. But I'm fine with it now. I tried using TortoiseHg but it didn't function well on my Windows 7 x64 virtual machine. I hear it's much better on the supported 32-bit platforms.
Here is a helpful tutorial on Mercurial written by Joel Spolsky.
It covers basic usage and commands, as well as how to work with Mercurial at a more conceptual level. If you are already familiar with SVN, then the first part is definitely worth reading: it talks about the major conceptual differences between SVN and Mercurial, because trying to use Mercurial in the same way that you use SVN is asking for trouble.
Have a look at the Mercurial book, or at this Mercurial tutorial.
Depending on your background with other source control tools, I would also suggest a specific SCM-whatever to Mercurial guide. For example, have a look at this guide for Subversion users.
Another good resource for getting your head around the whole "distributed" source control idea is: http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ ... with helpful diagrams!
If you use the latest TortoiseHG client and include the install directory in your PATH environment, you will be able to use both the nice GUI they provide, and the command line 'hg'
I cannot recommend using the mq extensions too much. They make for a great 'working repository' environment.
I use the queues to manage local changes against a subversion repository. I do my local short term changes and use mercurial to keep in sync with subversion and the rest of the team.
A few of Steve Losh's blog posts are good, even though they're a couple of year old now. They mainly deal with how to work with branching.
Guide to Branching in Mercurial
Branch Workflows - Branching as needed
Branch Workflows - Stable and Default
It's also worth looking at his hgtip.com site.
In addition to the Mercurial Book and the Hg Init tutorial, I'll like to mention the example-driven guide I've written:
Mercurial Kick Start
It shows how to get started with Mercurial and also covers some more advanced concepts such as named branches and hgsubversion. I've used it when teaching Mercurial to new users and they seemed to like it.