3 ms·
This is reminiscent of Apple's Time Machine, except each save is the same as manually clicking "Back Up Now", and I assume that commits are more granular so dir
by zackmorris 12y ago
This is reminiscent of Apple's Time Machine, except each save is the same as manually clicking "Back Up Now", and I assume that commits are more granular so directories can be committed individually rather than the whole tree.
I've often wondered if version control systems could be abstracted into a filesystem where each write is a commit, handling merges by choosing the local copy.
My primary dissatisfaction with git is that it lacks layers of abstraction. For example it should have had at least the first two distinct components listed below, something like:
1) git-fs (versioned filesystem, only supporting commit, clone and permissions)
2) git-merge (diff utility to handle merge conflicts)
3) git-local (two repositories wrapped in an abstraction to provide local and remote - the special sauce of git)
4) git-util (everything else like repair, reports, statistics, etc)
5) git (umbrella executable above previous layers)
I’m not super familiar with git console use so if it already is organized this way, great. But since it is not presented this way in its documentation, I feel that a great opportunity has been missed. We could have used git-fs the same way that people use Dropbox. Instead we have something with a lot of warts (things like .gitignore files interspersed with other files that continue the same mistakes that cvs and svn made, and the inability to save empty directories). I think git’s pattern of pull/commit/push is fantastic, but its shortcomings are so numerous that I’m going to stop knocking it right here before I get myself in trouble.
If gitfs ran on the Mac, I’d probably be using it right now to avoid frequent headaches where git interferes with the simplest pattern of pulling, merging by hand and pushing all files back if nobody else has committed in the meantime. I think that’s the motivation behind a library like this, because so many version control systems get the filesystem metaphor wrong and create two much friction by touting their various levers.
- calind 12y agoThere is an update to the docs on how to install it on OSX: http://www.presslabs.com/gitfs/docs/usage/ http://www.presslabs.com/gitfs/docs/usage/
- Dorsai 12y agoFollowed OS X insx but hit a wall with 'mount.fuse <git repo> <mount/folder> What is mount.fuse? I installed Python fuse.py... still poking around...
- Dorsai 12y agoFigured it out: I double checked the install - that everything linked properly etc. For OS X users do this: /usr/local/bin/gitfs <remote repo or local git parent folder> <any/mount/folder> and then you'll see a new volume mount on the desktop like "OSXFUSE Volume 0 (python 2.7)"