top | item 3571040

Uses of git

190 points| sundar22in | 14 years ago |devsundar.github.com | reply

72 comments

order
[+] ap22213|14 years ago|reply
Distributed version control is such a wonderful thing. And, I love how github has become a pseudo-wiki - letting individuals change information, knowledge and not just code. Naturally, HTML/HTTP is graph-like, but unfortunately it has converged over time into a few homogeneous master branches, owned and controlled by a few. I hope that techniques like DVCS with its branching, forking, and merging of information, can create better Wikipedias.
[+] mixonic|14 years ago|reply
Shameless alpha-testers-wanted plug:

I'm launching a website authoring collaboration tool based around Git. Let me know if you're a git fanatic who needs to build fairly simple sites from time to time, and maybe you can try it out and give me some feedback!

Figured this wasn't completely off-topic, as I'm building Yet-Another-Use-For-Git :-)

[email protected]

[+] alinajaf|14 years ago|reply
This sounds awesome, thanks for mentioning it here. Mail sent.
[+] amirmc|14 years ago|reply
There's also git-annex

http://git-annex.branchable.com/

[+] emmelaich|14 years ago|reply
Another use case for git-annex (and hence git) would be host intrusion detection a-la aide, or tripwire. You'd have to add metadata tracking to make it worthwhile though.
[+] icebraining|14 years ago|reply
Came here to mention that. Having a simple way of managing where the various copies of my files are stored is great.
[+] bostonvaulter2|14 years ago|reply
That looks very interesting. I also really like how the front page shows the use-cases plainly
[+] rplnt|14 years ago|reply
The sentence about Torvalds might be a bit of a stretch. The approach (distributed version control) wasn't new when he created git.

Also, what is with that changing of selection color? :)

[+] sundar22in|14 years ago|reply
Its true that Linus did not invent distributed version control (he did not invent OS either), but git did change the world of version control systems similar to his other creation Linux.

Thanks for observation, i did not notice the selection color was pink :)

[+] kristianc|14 years ago|reply
HTML5 Boilerplate uses the same selection color, so its feasible that that was used as a starting point.
[+] ComputerGuru|14 years ago|reply
I'm surprised no one has mentioned it before, not that it's revolutionary or amazing, but just so damn helpful:

Turn your /etc/ into a git repository. It'll save you hours on end of maintenance and debugging in the long run, especially when you update packages and find that your configurations have been overwritten or lost.

[+] gerrit|14 years ago|reply
You should check out etckeeper, a package that does exactly that. Additionally it will hook into apt-get and similar system tools and automate Some of the revisioning
[+] gwern|14 years ago|reply
> Github and Bitbucket provide a wiki backed by git. Colloboration tools such as wikis can be run by using git.

And Gitit: http://gitit.net/

[+] sundar22in|14 years ago|reply
Thanks for this suggestion. Post updated. +1
[+] Keithamus|14 years ago|reply
On the "git as a backup tool", the author missed a tool which looks quite interesting, called Bup (https://github.com/apenwarr/bup) which is based on git's toolchain. It is still immature but worth looking at.
[+] sundar22in|14 years ago|reply
Thanks, Your suggestion is updated in the post.
[+] HerrMonnezza|14 years ago|reply
IkiWiki (Perl-based) is another wiki backed by git (or svn, or bzr, or other VCSes), and has also other nice features like static website and blog generation.

[1]: http://ikiwiki.info/

[+] sundar22in|14 years ago|reply
Thanks for the link. Updated the post with your suggestion! Hope its useful for others as well.
[+] alexchamberlain|14 years ago|reply
The blog states that git can be used as a database with version control. Does anyone know of a more optimised (document-oriented) database with version control?

If not, is there an interest for one?

[+] throwaway191|14 years ago|reply
Could you elaborate on what you mean by "document oriented db with version control"? Couch stores revision identifiers with every document ID, though old versions are subject to deletion whenever DB compaction occurs...
[+] kijin|14 years ago|reply
I'm more interested in the "distributed" part of the story. Version control can be fitted into any database with a bit of hacking, but a distributed ACID database where you can commit to any node and merge with any other node sounds like a really interesting concept.

Especially when combined with the fact that it is extremely difficult to forge git history without getting noticed, people could use something like git as a reliable, scalable, and censorship-resistant platform for data sharing and storage.

[+] ericsink|14 years ago|reply
Veracity has a database feature which might be what you are envisioning. (Disclosure: I am one of the developers of Veracity). But I would not describe it as document-oriented. It versions a collection of records with fields in the same way that regular version control manages a collection of directories and files, with support for history and changesets and push and pull.
[+] vectorjohn|14 years ago|reply
Couchdb keeps old versions of documents. And it is document oriented. So there's that.
[+] jamesgeck0|14 years ago|reply
How well does Git handle being used for syncing arbitrary files? I'd been led to believe that storing large binary blobs in it was a Bad Thing (tm).
[+] SonicSoul|14 years ago|reply
excuse my ignorance.. but it is interesting to me that we see blog posts about how to find different uses for git. what makes git so great that we (or people writing such articles) try to retrofit it into tools that already have more mature alternatives dedicated solely to doing that one thing really well. it's some form of marketing i don't fully understand.
[+] alinajaf|14 years ago|reply
If you understand gits internal model, it's a content-addressable data store. This happens to lend itself well to version control, but the fact that it's used for version control is somewhat incidental. It would be good if there were some way of identifying the underlying data-structures as separate from the version control system.
[+] sundar22in|14 years ago|reply
I see your point, and its not a marketing imho.

In some cases i agree that there are mature alternatives, but what if you dont want or cannot use them. For e.g. Dropbox is a great file storage/sync service. But you may not be able to use it inside an enterprise and store office/confidential documents.

I think its essential to know and understand various ways in which a tool can be used. So that you can apply it to solve/simplify a problem. Its not a marketing.

[+] amirmc|14 years ago|reply
Isn't this what 'hacking' is (at least partially) about?

Despite the existence of 'solutions', there are lots of interesting things people can do with git and it's probably fun to explore them.

edit: I'm not sure why you consider it 'marketing' either.

[+] bwarp|14 years ago|reply
It's simply zealotism.

The right tool for the job is always the right tool for the job.

Git is not the right tool for the job for most of the cases described.

[+] enjalot|14 years ago|reply
We are (ab)using git in some fun ways. Our designers use branches we setup with git flow to develop and manage assets. We deploy from develop and master branches to dev and production servers. We also use the github api to allow the dynamic loading of the assets from the head of any one of the branches for internal testing.

I've been pleasantly surprised how well the designers have taken to the workflow, and its great to take advantage of the flexibility of git especially when we don't have the time to roll our own backend to cover all those bases.

[+] franklovecchio|14 years ago|reply
I do the same thing for testing branches and continuous deployment on EC2! +1.
[+] iambot|14 years ago|reply
I've come across a project before that used GitHub's gist API as a document store for client side apps. Can't for the life of me find it again, Don't suppose anyone else has come across this use and can remember the url (or has it bookmarked)
[+] human_error|14 years ago|reply
There's also Blogofile, static blog generator for Python lovers.
[+] sundar22in|14 years ago|reply
Thanks for the info. I love python.
[+] ___Calv_Dee___|14 years ago|reply
Fantastic post on the beauty of git. The Using git for for deployment article seems like a great micro-intro to git. Nice one!
[+] franklovecchio|14 years ago|reply
I use Gists as user-data files for EC2 deployments. Works amazingly well.
[+] sundar22in|14 years ago|reply
Interesting, could you please elaborate on this use of git. It will be helpful. Thanks.
[+] eiji|14 years ago|reply
Allowed uses of git?

Maybe someone can shed some light on that aspect, and the webpage should too.

Every time when I see "GNU GPL" I just turn around and think it's not worth the trouble.

[+] scott_s|14 years ago|reply
I think you have a fundamental misunderstanding of the implications of GPLed software.

If you incorporate GPLed software into your own software - that is, copy the source code - then your work is considered a derived work and is also under the GPL.

Software that is LGPLed can be linked to without making your application under the GPL itself. This includes things like glibc. (The "L" in "LGPL" used to stand for "Library" but now it means "Lesser.")

Finally, if you use GPL software to produce your own works, there is no effect. So using git to manage your own source has no impact. Same with using gcc to compile your source.

[+] bradleyland|14 years ago|reply
I'm not seeing the term "allowed" on the page. Maybe it was edited since you posted. I'm thinking that if it was used, it was probably a result of English being a second-language or something similar.

I don't understand how the GNU GPL license would impact your usage of git. Do you intend to include git with your application?

I think the intent of this article is to show you the different ways you can implement git to solve a variety of problems. The GNU GPL license is largely irrelevant to end-users of software.

[+] sundar22in|14 years ago|reply
Intention of the post is to show various ways in which we can use git and they are allowed uses too. For e.g. MySQL uses GNU GPL too, you can use it in your poject and use it for any purpose.