The Git Revolution Is Here
drdobbs.com
drdobbs.com
extra ref: Perl5 git repo: http://perl5.git.perl.org/perl.git | Github mirror: https://github.com/mirrors/perl
FTFY. Vendor apps and commercialized software aren't purchased (to my knowledge) with the intent of being able to point the finger with the buyer's lawyer. The reason large enterprises prefer Perforce/TFS/etc. is (along with their proven capability to scale) that if something goes wrong they can call the vendor for help.
While you might be able to post on a usergroup and hope for a response, you can't call Linus directly. That's a big difference for the people making the decisions from a financial, architectural, and tools-planning level.
> Which isn't quite the same as being able to get support from the company which built the software
I'm sure they'll build Git for you if you ask :) Do you think the original authors of Perforce etc. are still with the company? Are you under the impression that their current development team understand the Perforce source code far better than people providing professional Git support understand Git's?
> and who can push out a new release to fix the bug that you've just run into.
That's exactly what Git support can do. Why not?
[edit: to clarify who "they" are]
Disclaimer: I work for Perforce
- Storage of database on local drive - the last time I worked with perforce, HEAD alone was 280GB... where would this fit? (there's a presentation about google's use of perforce where they say the metadata alone for their database is >1TB! - so even storing just metadata might not fly)
- As number of people using database increases, chance of needing to store hand-modified binary files (Office, Photoshop, Maya/Max/XSI/etc.) increases, and advantage to storing non-modified binary files (old builds, tools, etc.) increases. (Storing things in shares on people's PCs, or having two systems, or whatever, just ain't great.) Centralized locking is pretty much essential for such files, but, being centralized, it's hard to support with a distributed system...
The former problem could almost certainly be solved. The latter I'm less sure about. Partly for technical reasons, but partly because the idea that binary files shouldn't be version-controlled is, for some people (and I don't know if the git people are of this mind), a point of inviolable principle.
1+TB (and git doesn't support partial checkouts) would make it difficult for people to work off a laptop, or use a SSD. Everybody would need 2 2TB drives on the off chance that they might have to work on more than one project at once. Or you'd have to check less stuff into the git repository.
I know people say disk space is cheap; I just don't think it's quite cheap enough yet to piss away to this degree. It's one thing to have a server with masses of storage, I'm just not convinced you can require every client PC to have the same. I could be wrong.
As someone who has used both, the workflow features geared towards large organizations and professional-grade code processes have always struck me as a major feature of p4.
http://blogs.atlassian.com/2012/10/stash-13-enterprise-git-p...
Disclaimer: I work for Atlassian
Slowly migrating users by teachings the early adopters with git-p4 also helps to prevent the sudden switch on "Monday" that goes horribly wrong causing everyone to loose a few days.
The real problem has been shops that have 400GB perforce servers and they employed absolutely no rules about where things would live on the server. This would result in Perforce clients that would cherry pick directories from all sorts of random sub directories across the Perforce server to build a product (v.s. say something simpler like projectFoo/, 3rdparty/, and binaryTools/) The worst are the exceptions in the perforce client such as the perforce client would grab the src/ directory, but exclude src/vs/ because a few years ago someone checked in a visual studio install into the src directory and somewhere someone is still using it so they can't remove/move it... Even if they stick with Perforce companies like this really should clean up their repositories, call it simple professionalism.
After a repository is cleaned up (even a basic pass can make a huge deal) then using git on top of perforce or even thinking of migrating is much easier to do.
Using Git inside large companies is completely doable right now. In the past when Git was younger I gave a few presentations in the Boston area (where I live) to companies that were interested in learning more. If your in the area and if you just want to pick my brain on the topic or how it might apply to your situation I am always up for grabbing lunch.
A good example is a special effects company where you have a massive amount of assets (PB?) including storing multiple copies of each frame in full resolution raw for the movie. If it you only wanted HEAD local hard drives can't even hold all that data and you only want to work with small parts at a time. For this situation stock Git is absolutely not what you want.
Before anyone tries to sell you that "of course Git scales" you really need to find out more information. Git does have large file support via extra tools that solve it in a handful of different ways, (sidenote one tool: bup is a very very cool from a technical perspective). With large repositories you must also find out are you dealing with a lot of small files or a handful or large files. Windows for example will fall on its face if you try to dump it with a ton of files which git will stat (say just a 4GB git repo) when you run git status while linux can't handle it with no problem. Once you get beyond 4GB in repository size you need to evaluate the problem more closely. Nine times out of ten it has been as simply as splitting the repo into two, one that contains the source and is 1GB and leaving the 399GB of binaries (for 6 platforms, debug and release, etc etc) in a better long term archive storage system be that another git repo using one of the above tools, perforce, or most likely some server that IT manages. An easy way to look at the 400GB repo is today I doubt you are syncing all 400GB to your laptop from perforce (Stock macbook air's max out at only 256GB for example) so how is your perforce client setup? What data does it grab? which data does it leave on the server?
I've seen the annoyances of using multiple depots/databases/repos/etc. with Alien Brain in the past, and that was just one system. Now I'm working on a smaller project that uses both git and SVN, and even though it's a smaller project, it's still annoying today. Being able to have just one system, that can swallow absolutely everything without a fuss (while not being especially annoying to use, like Alien Brain was), is a big advantage.
Sure Perforce is nice, but it is hardly perfect. No product is perfect and for every situation you want to evaluate what the real issues that need to be solved and make the tradeoff's necessary.
- lightweight branches (your branch is just a different head, there is nothing permanent about it)
- git rebase -i (rewrite your history)
- git add --patch (add parts of a file to a commit instead of the whole file)
- the philosophy of preparing the commit by putting the files or portions of files you want to commit in the staging area, as opposed to committing everything per default
I know Mercurial has alternatives to most of these functionalities, through various plugins. But I can't say I found them nearly as usable as Git. And that's saying something considering Git's command line interface.
Webinar's next week, and I may sign up to see what this is all about. (Disclaimer: Certified Perforce Admin here, and no, I don't work for Perforce.)
The code is out of the hands of Linux kernel team, so you can believe that git will work well. And the fame of Linus and later github also count.
I don't know many people who use Windows that like Git. The ports were buggy for a long time and the best visual tool, SmartGit, isn't free. Mercurial which has TortoiseHg which is excellent but I hear is painful to get running on OSX (maybe this has changed). Mercurial is fairly popular still though. I think a lot of people use it but not many popular articles get written about it the same way it does about Git.
A real git front end would be awesome!
Excellent suggestion with the screenshots and the six items.
So if some developers are using Git, and the idea is to keep all company stuff in a clearly-shareable and accessible spot, Git + Git Fusion + p4 + Commons would do it.
[Disclaimer: I work at Perforce, hence shamelessness of plug]