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

Re: Config spec for git

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 17, 2021, 12:32 UTC
Message-ID
<211117.86fsrv6jq7.gmgdl@evledraar.gmail.com>
In-Reply-To
<D5EE9939-F639-4E69-BD81-10B05EC43A8E@jpl.nasa.gov>
On Wed, Nov 17 2021, Wallace, Brooke T (US 349D-Affiliate) wrote:
Show 36 quoted lines
> Has any one considered adding a config spec feature to Git or does Git alreadt have some way to support the same features?
>
> I've been using Git for a while now for small projects but taking on a
> new larger project I've come to realize that Git does not have config
> specs and so seems to be missing an important feature for managing
> large projects.
>
> We use configuration specs to select directories from a common code
> base (repo) and map them into different baselines to creat multiple
> product builds with different feature sets. We used this feature in
> VCSs such as Clearcase and Perforce. Ultimately this allows us to
> manage the repo in one directory structure and create product builds
> with a different one. For example the repo has multiple directories
> for different products/targets, but a baseline, the workspace, has
> only one target directory always with the same name mapped to the same
> location. Obviously the corresponding directories in the repo have
> different names.
>
> Git supports the notion of submodules, but I see no way to map a
> submodule directory to a different name, remove unwanted subdirs of a
> submodule, or map a submodule over a subdirectory of the primary
> repo. Config specs also allow you to specify a specific branch or
> version that you want to map to your workspace independent of other
> directories, branches and versions.
>
> I suppose it may be possible to achieve the same result by treating
> the primary repo as the configspec. But I feel like there are some
> features config specs support that i do not have using submodules, but
> might need down the road.
>
> I can see that omitting, obscuring, or overwriting parts of a repo
> would not play well with the commit id. So I imagine there could be
> some real complications trying to add support for the notion of a
> flexible config spec.
>
> Appreciate any comments/feedback

I understand all the terms involved in your E-Mail except "config spec", so on the first couple of readings I was thoroughly confused.

I gather from some Google searching that you may be referring to ClearCase SCM jargon: https://en.wikipedia.org/wiki/Rational_ClearCase#The_configuration_specification & https://www.ibm.com/docs/en/rational-clearcase/8.0.0?topic=views-how-config-spec-works

From your description it seems like you're talking about some combination of the work-in-progress "sparse checkout" feature, and a feature to compose arbitrary subdirectories and overlays of existing repositories.

As far as I know nobody's working on the latter, although I suppose some clever combination of submodules and sparse checkouts might make it possible.

All of that's really a shot in the dark, I think I'm probably not the only one who'd benefit from a description of what you'd expect a "config spec" to do for you that doesn't assume pre-existing knowledge of the term.

More generally it's a very common initial migration stategy between SCM's and X SCM -> Git in particular to first consider how you could 1=1 map existing behavior to Git.

Those sorts of migrations are generally much more painful in the longer term than considering how you'd map the software or assets you have to Git if you were starting out today, which may be something to think about.

Previous: Wallace, Brooke T (US 349D-Affiliate)Next: Philip Oakley
Message 2 of 5 in “Config spec for git”
  1. Wallace, Brooke T (US 349D-Affiliate)Nov 17, 2021
  2. Ævar Arnfjörð BjarmasonNov 17, 2021
  3. Philip OakleyNov 17, 2021
  4. Martin von ZweigbergkNov 22, 2021
  5. Johannes SchindelinNov 18, 2021

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.