From: <rsbecker@nexbridge.com>
To: "'brian m. carlson'" <sandals@crustytoothpaste.net>,
"'Tech Kenya'" <techkenya@protonmail.com>
Cc: <git@vger.kernel.org>
Subject: RE: Suggestion: Enhance git init with Language-Specific Templates
Date: Wed, 5 Mar 2025 17:50:34 -0500 [thread overview]
Message-ID: <00a201db8e21$04d42ac0$0e7c8040$@nexbridge.com> (raw)
In-Reply-To: <Z8jTjt1CQ7hp8KSP@tapette.crustytoothpaste.net>
On March 5, 2025 5:43 PM, brian m. carlson wrote:
>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
next prev parent reply other threads:[~2025-03-05 22:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-04 11:49 Suggestion: Enhance git init with Language-Specific Templates Tech Kenya
2025-03-05 22:43 ` brian m. carlson
2025-03-05 22:50 ` rsbecker [this message]
2025-03-05 22:52 ` Junio C Hamano
2025-03-05 23:53 ` Oleg Taranenko
2025-03-05 23:56 ` Junio C Hamano
2025-03-06 0:04 ` Oleg Taranenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='00a201db8e21$04d42ac0$0e7c8040$@nexbridge.com' \
--to=rsbecker@nexbridge.com \
--cc=git@vger.kernel.org \
--cc=sandals@crustytoothpaste.net \
--cc=techkenya@protonmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).