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

RE: Suggestion: Enhance git init with Language-Specific Templates

From
rsbecker@nexbridge.com <rsbecker@nexbridge.com>
Date
Mar 5, 2025, 22:50 UTC
Message-ID
<00a201db8e21$04d42ac0$0e7c8040$@nexbridge.com>
In-Reply-To
<Z8jTjt1CQ7hp8KSP@tapette.crustytoothpaste.net>
On March 5, 2025 5:43 PM, brian m. carlson wrote:
Show 52 quoted lines
>On 2025-03-04 at 11:49:14, Tech Kenya wrote:
>>
>>
>> I would like to propose an enhancement to git init that allows users to specify a
>language or framework when initializing a repository, automatically applying an
>appropriate .gitignore template.
>>
>> Proposal
>>
>> Introduce a flag to git init that enables users to initialize a repository with a
>predefined .gitignore based on the project's language or framework. For example:
>>
>> git init --golang
>> git init --python
>> git init --node
>>
>> This would generate a .gitignore file using well-established templates, such as
>those from Toptal's Gitignore Generator
>https://www.toptal.com/developers/gitignore/ or GitHub's official .gitignore
>repository.
>
>I think this is an interesting idea, but unfortunately, I think it's going to be practically
>difficult to implement.  You've mentioned three very common languages, but there
>are a lot of programming languages and even more compiler environments, and it
>wouldn't be practical for us to try to support them all.
>
>For instance, I use Neovim, and the version I'm using ships with 693 different syntax
>files, which means that there's about 693 different programming languages
>supported.  I was recently exposed at work to some languages that I'd never heard
>about before and which are not supported by Neovim, and presumably those users
>would also want similar functionality.
>
>That is compounded by the fact that there are a lot of OS- and environment-specific
>configuration.  As an example, a C project on macOS might want to ignore XCode-
>related files, but for a project that's only on Linux, that wouldn't be necessary.
>Similarly, that C project might create shared libraries that should be ignored, but
>those might end up with any of `.so`, `.sl`, `.dylib`, or `.dll` extensions.
>
>You mentioned some possible sources for this configuration, but we try not to
>prioritize specific outside projects.  So just because GitHub is widely used and some
>GitHub employees contribute to Git doesn't mean we give it special precedence or
>privileges, and we wouldn't want to prioritize their specific collection (or any other),
>nor would be want `git init` to attempt to make a network connection.  We also
>don't want to maintain this collection ourselves, since it's very project specific.
>
>What Git _does_ provide is a way to create a template of objects that should be in
>the `.git` directory using the `--template` option.  It's possible to create a template
>that contains an initial commit with a `.gitignore` file.  I personally would not
>recommend this approach, since it will not work gracefully with alternate ref
>formats or hash algorithms, but it is an option for people who want to use it.  This
>was in common use for setting up the default branch name before `git init` added
>the `-b` option and it's related config, so it is well tested.

One way to deal with this is to add language-specific descriptors. What I did in my own front end is to provide a set of regex patterns that define the relevant portions of the languages and extensions. This allows my end-users to add their own languages and leave me out of it completely. It might be workable if we have a quantified extensible language structure for this. Otherwise, this might be DOA.

--Randall
Previous: brian m. carlsonNext: Junio C Hamano
Message 3 of 7 in “Suggestion: Enhance git init with Language-Specific Templates”
  1. Tech KenyaMar 4, 2025
  2. brian m. carlsonMar 5, 2025
  3. rsbecker@nexbridge.comMar 5, 2025
  4. Junio C HamanoMar 5, 2025
  5. Oleg TaranenkoMar 5, 2025
  6. Junio C HamanoMar 5, 2025
  7. Oleg TaranenkoMar 6, 2025

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.