git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Make logAllRefUpdates true by default

From
Junio C Hamano <junkio@cox.net>
Date
Nov 26, 2006, 20:12 UTC
Message-ID
<7vhcwmt19w.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<11645554033331-git-send-email-wildfire@progsoc.org>
I do not think I can take this patch in its current form.

Although I think majority of users would find it convenient to have ref-log enabled by default on repositories to be developed in, it does not make sense to enable ref-log by default for bare repositories that is used as a distribution point. So at least this needs an option to disable it (if you make it the default), or enable it.

        Side note.  A ref-log at a distribution point _could_ be
        used for somebody to say "Hey, I pushed that fix three
        days ago -- why are you complaining about the breakage
        I've already fixed before checking the public tip?", but
        that is a manifestation of lack of communication among
        people and a SCM is not about solving that problem.

But having to add an option tends to drive people nuts. We already have --shared and --template, so adding --with-reflog would be "just one more option" that we may not have to worry too much about, but we would have to revisit this as we gain more experience using git and more best-current-practices are learned. I wonder if we can infer if a particular invocation of init-db is to prepare a repository to be developed in without being told with a command line option. If we can do so, then we can do the configuratio setting with --with-reflog=[yes|no|guess] option (and lack of --with-reflog means "guess").

There are three use cases that init-db is run directly from the command line, and I think you want different behaviours.

 (1) you have a directory, perhaps already with many files
     there, because you are doing an initial import to prepare a
     repository to work in.  You obviously want a ref-log there,
     and you want --shared=no.  You do not care about
     denyNonFastForwards because you are not likely to be
     pushing into it.
 (2) you are preparing a public distribution point for _your_
     own tree.  You do not want a ref-log, you want --shared=no,
     and you _might_ want denyNonFastForwards.
 (3) you are preparing a public shared repository for project
     members to use to synchronize, CVS-style.  You do not want
     a ref-log, you do want --shared=group, and and you want
     denyNonFastForwards.

Another case that init-db is run indirectly is via git-clone and via foreign SCM importers. I think enabling ref-log during non-bare clone, for example, should behave similarly to (1) because the resulting repository is clearly meant to be used with a working tree in which to develop. A bare clone is either (2) or (3) but you do not have to decide what to do with ref-log (i.e. "don't"). But in these "indirect" cases, the command that drives init-db can explicitly tell init-db what it is doing, and we would need to have both --with-reflog and --without-reflog options so that the command can tell what it wants from init-db explicitly without having init-db guess.

If you can come up with a reliable way to tell (1)..(3) then we can make init-db to do the right thing without an end user to tell what should happen --with-reflog or --without-reflog; and they do not even have to say --shared anymore as an added bonus.

Having thought about all the above, I think the event to create distribution/synchronization point repositories are rare enough and the simplest and cleanest way might be to make it default and add a --without-reflog option to the command, and forget about the guessing.

Previous: Anand KumriaNext: Shawn Pearce
Message 2 of 3 in “Make logAllRefUpdates true by default”
  1. Make logAllRefUpdates true by defaultAnand Kumria, Nov 26, 2006
  2. Junio C HamanoNov 26, 2006
  3. Shawn PearceNov 27, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.