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

Re: Config spec for git

From
Philip Oakley <philipoakley@iee.email>
Date
Nov 17, 2021, 15:38 UTC
Message-ID
<37ef900a-d9bf-1941-75eb-ea8556e2ba8c@iee.email>
In-Reply-To
<211117.86fsrv6jq7.gmgdl@evledraar.gmail.com>
On 17/11/2021 12:32, Ævar Arnfjörð Bjarmason wrote:
Show 69 quoted lines
> On Wed, Nov 17 2021, Wallace, Brooke T (US 349D-Affiliate) wrote:
>
>> 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.

Also intrigued, I tried "mapping clearcase config spec to Git" in my search engine to see what it came up with.

There's a YouTube webinar  "ClearCase to Git - November 2016" https://www.youtube.com/watch?v=z2odE0CKxCQ  which looked like it may help clarify issues. Then there are a few StackOverflow Q&As that may help with terminology. https://stackoverflow.com/questions/763099/flexible-vs-static-branching-git-vs-clearcase-accurev https://stackoverflow.com/questions/28280685/toward-an-ideal-workflow-with-clearcase-and-git

It feels like your config specs are like feature branches, but that what is missing (from Git, relative to the config spec) is a merge strategy that can define which particular files/folders are merged at the one time, rather than the current 'all files' being merged. This desire has come up a few times when large (corporate?)  projects need to merge large independent feature branches that will need different specialists to handle different groups of files (i.e. partial merges, e.g. [1]), but that hasn't been implemented (yet) as it would need someone to think it through and work on it. -- Philip [1] https://lore.kernel.org/git/BY5PR19MB3400EB9AD87DFE612AFD5CC390810@BY5PR19MB3400.namprd19.prod.outlook.com/

Collaborative conflict resolution feature request
Previous: Ævar Arnfjörð BjarmasonNext: Martin von Zweigbergk
Message 3 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.