On Sat, Apr 28, 2012 at 13:00, Matt Welland <estifo...@gmail.com> wrote: > On Sat, Apr 28, 2012 at 6:34 AM, Richard Hipp <d...@sqlite.org> wrote: >> On Sat, Apr 28, 2012 at 7:03 AM, Leo Razoumov <slonik...@gmail.com> wrote: >>> >>> Hi All, >>> Fossil design clearly separates a project repository database from a >>> checkout database. It is explicitly stated in the Fossil >>> documentation: >>> >>> http://fossil-scm.org/index.html/doc/trunk/www/tech_overview.wiki >>> "Notice that the checkout database contains a pointer to the >>> repository database but that the repository database has no record of >>> the checkout databases. That means that a working checkout directory >>> tree can be freely renamed or copied or deleted without consequence." >>> >>> Unfortunately, this in not true anymore since trunk [e604d483ee55] >>> (2012-04-27 15:43:51). Now every time you "fossil open" a repository, >>> the checkout root gets recorded into config portion of the project >>> repo. All the checkouts ever created are displayed as "alt-root" >>> entries by "fossil info". The "alt-root" list can get long if one has >>> many checkouts. By the way, "fossil close" does *NOT* remove the entry >>> from the alt-root list (a bug??). The list only grows and never >>> shrinks. A convenient way of dispensing with checkouts by "rm -rf >>> path-to-checkout" leaves behind dangling references to non-existing >>> directories. >>> >>> To the best of my knowledge there has been no discussion of this >>> feature on the fossil-users or fossil-dev mailing lists. Therefore, I >>> would greatly appreciate if someone can explain to me >>> >>> (1) What is the purpose of the feature. >>> (2) Its intended use. >>> (3) Rational for violating long-standing Fossil design principle that >>> project repo database does not know its checkouts. >> >> >> I added this to help me keep track of where my check-outs are located. I >> keep all of my repositories in a single directory so I know where they all >> are. But my check-outs are scattered about hither and yon, according to >> their use and function. Many times I'll be looking at my growing collection >> of repositories and wonder "where did I check this one out most recently". >> Or I'll be be working in a check-out and want to do some unrelated change on >> another branch and then wonder if I have other checkouts of the same repo >> sitting around anywhere. >> > > Isn't this information also stored in ~/.fossil as > "ckout:/path/to/ckout|/path/to/repo.fossil" entries? I think I'd prefer to > see the data recorded just once and actually I think the ~/.fossil file is a > better place. Those entries should meet all your requirements as it maps > each repo db to a checkout. Even if the repo db was moved there is enough > data available to find the mapping and update the pointers in the _FOSSIL_ > files. > > Since I can't get fossil ssh to work we are using rsync to sync fossils > cross-site and with this feature every time someone blows away a repo and > re-gets it the rsync logs will show a transfer implying that a change was > made. Not a big deal but confusing and an annoyance nonetheless. > > If the decision is to stick with the new method then please consider > removing the code that adds the ckout: entries to ~/.fossil as people will > write automation that relies on one or the other and that can get messy and > chaotic when there is not one canonical source data location. >
Matt, very good point! IMHO, "~/.fossil" is, indeed, the best place to keep track of the existing checkouts. One can also write a script that loops through the checkouts in ~/.fossil and removes the dangling references and/or lists checkouts with uncommitted changes. --Leo-- _______________________________________________ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users