-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Linus Torvalds wrote: > > On Mon, 16 Oct 2006, Aaron Bentley wrote: >> Bazaar's namespace is "simple" because all branches can be named by a >> URL, and all revisions can be named by a URL + a number. > I pretty much _guarantee_ that a "number" is not a valid way to uniquely > name a revision in a distributed environment, though. I bet the "number" > really only names a revision in one _single_ repository, right? Right. That's why I said all revisions can be named by a URL + a number, because it's the combination of the URL + a number that is unique. (In bzr, each branch has a URL.) > In contrast, in git, a revision is a revision is a revision. I agree that a revision is a revision, but I don't think that's a property unique to git. :-) > If you give > the SHA1 name, it's well-defined even between different repositories, and > you can tell somebody that "revision XYZ is when the problem started", and > they'll know _exactly_ which revision it is, even if they don't have your > particular repository. When two people have copies of the same revision, it's usually because they are each pulling from a common branch, and so the revision in that branch can be named. Bazaar does use unique ids internally, but it's extremely rare that the user needs to use them. > Now _that_ is true simplicity. It does automatically mean that the names > are a bit longer, but in this case, "longer" really _does_ mean "simpler". > > If you want a short, human-readable name, you _tag_ it. It takes all of a > hundredth of a second to to or so. But tags have local meaning only, unless someone has access to your repository, right? >>> About "checkouts", i.e. working directories with repository elsewhere: >>> you can use GIT_DIR environmental variable or "git --git-dir" option, >>> or symlinks, and if Nguyen Thai Ngoc D proposal to have .gitdir/.git >>> "symref"-like file to point to repository passes, we can use that. >> It sounds like the .gitdir/.git proposal would give Git "checkouts", by >> our meaning of the term. > > Well, in the git world, it's really just one shared repository that has > separate branch-namespaces, and separate working trees (aka "checkouts"). > So yes, it probably matches what bazaar would call a checkout. The key thing about a checkout is that it's stored in a different location from its repository. This provides a few benefits: - - you can publish a repository without publishing its working tree, possibly using standard mirroring tools like rsync. - - you can have working trees on local systems while having the repository on a remote system. This makes it easy to work on one logical branch from multiple locations, without getting out of sync. - - you can use a checkout to maintain a local mirror of a read-only branch (I do this with http://bazaar-vcs.com/bzr/bzr.dev). > Almost nobody seems to actually use it that way in git - it's mostly more > efficient to just have five different branches in the same working tree, > and switch between them. When you switch between branches in git, git only > rewrites the part of your working tree that actually changed, so switching > is extremely efficient even with a large repo. You can operate that way in bzr too, but I find it nicer to have one checkout for each active branch, plus a checkout of bzr.dev. Our switch command also rewrites only the changed part of the working tree. Aaron -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFNFrv0F+nu1YWqI0RAgBHAJ9XpmdvuCNDysxFhnyeCmkEG/z0ggCggMsJ WyW6lqGMokh0k0It1KOdgtk= =L1SR -----END PGP SIGNATURE----- - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html