>Why use BitKeeper when there are lots of great alternatives?
>For many projects, the answer is: you shouldn’t.
BitKeeper itself is a collection of repositories. Download an install image, install, and clone it:
$ bk clone http://bkbits.net/u/bk/bugfix
$ cd bugfix
$ bk here
PRODUCT
default
$ bk comps -m
./src/gui/tcltk/bwidget
./src/gui/tcltk/tcl
./src/gui/tcltk/tk
./src/gui/tcltk/tkcon
./src/gui/tcltk/tktable
./src/gui/tcltk/tktreectrl
./src/win32/dll/scc
./src/win32/dll/shellx
./src/win32/dll/shellx/src
./src/win32/msys
./src/win32/vss2bk
which shows that what we clone by default doesn't include all that other crud (we cache the build result from that and populate it as needed to do builds).Play with it, it's very different from Git, the subrepo binding is just like file bindings. Everything works together and obeys the same timeline.
The about only difference is that git prefers the whole history and you cannot yet set per submodule shallow clone policy. It wouldn't even be too hard to add that.
Regarding versioning, you can always version any file by storing every revision and compressing them as best you can. I believe this is what Perforce does. Repo size can of course become an issue, and git doesn't do a great job with that, since it stores everything, and stores it locally. Perforce can at least discard old revisions and lets you select history depth on a per-file or file type basis.
The more serious problem with git in my view is that there's no good automated merging tools for many types of files, nor are any likely to arise. And more importantly, most people working on your average game aren't interested in forming in-depth mental models of how their tools work, and certainly don't want to have to pick up the pieces when they go wrong. So for most files, you need an exclusive lock (check in/check out, lock/unlock, etc.) model, or similar. That works quite well. But for obvious reasons, git just doesn't support this model at all, and I believe Mercurial is the same - and no amount of transparent/magic large file storage backends or whatever are going to fix that.
$ bk clone http://bkbits.net/u/bk/bugfix/
type make and you should have a working BK built from source.Asking due to looking for a Gogs/GitLab (like) server side solution for a project under development. However, it needs to handle binary data well, which Git-based solutions don't.
http://bkbits.net/u/wscott/bkbits/