views:

89

answers:

1

Hi,
I was reading the book Git Internals and was awestruck by its simplicity. So I thought may be I could try to make a simplistic version of Git (something that can be done withing 4-5 months time period). I understand that Git is a huge project and done by the best of the software engineers.

My question is what are the possible challenges in undertaking such a project ? Something that only supports only few features lets say creating a repository, branching, committing, check out.

My main motive behind such a project is that I have interest in data structures, programming in Linux and I particularly like C. So while rest of my class mates are happy making web applications I want to do something like this. If you have some other suggestions of projects that match my interests then you are more than welcome to mention them :-)

Thanks.

+1  A: 

Although imitation is sincerest form of flattery, the world does not need another Git. I certainly don't mean to discourage you from pursuing something related, though. Could you get credit for adding features or using the Git back-end for a different purpose?

A few things I've thought of doing with Git but haven't had the time are:

  • Add tracking of special files.
  • Add tracking of directory permissions.
  • Use the Git back-end as an immutable data store for something other than version tracking (perhaps for storage of sensitive data or something).

I hope you find something cool to work on!

Jonathan
yeah thanks, I was also thinking along similar lines in making this project a little different. I don't know how Git handles image files, maybe I could add some feature for image files (it might be futile if Git already knows how to handle images )By the way your 3rd point seems interesting, could you elaborate it a little bit ?
Abhinav Upadhyay
Imagine storing financial data or something. You may need to guarantee that what you've stored has not changed. Since Git blobs are named by their SHA1 sums, you can guarantee that, if you know the name of a blob and its SHA1 still matches, then it has not changed. Expand this with commands that deal mostly with blobs, maybe with trees, maybe name the trees with tags (no need for commits), you could build a storage system that guarantees immutability if you know the names of the objects.
Jonathan
well thanks, I was just looking up for the significance of immutable storage systems, I think it could be a significant project in itself. Maybe the whole repository could be encrypted to enhance the security.
Abhinav Upadhyay
Encrypting could protect against unauthorized reading, yes. Really depends on what you are trying to build. I suppose, with public-key encryption, you may even be able to work out a user permission system (but make sure it offers some non-trivial value above standard filesystem permissions).
Jonathan