git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Abhishek Kumar <abhishekkumar8222@gmail.com>
To: Kenneth Lorber <keni@hers.com>
Cc: git@vger.kernel.org
Subject: Re: [RFC PATCH 3/6] Add namespace collision avoidance guidelines file
Date: Sun, 17 May 2020 15:15:13 +0530	[thread overview]
Message-ID: <20200517094513.GA947@Abhishek-Arch> (raw)
In-Reply-To: <1589681624-36969-4-git-send-email-keni@hers.com>

Hello Kenneth,

On Sat, May 16, 2020 at 10:13:41PM -0400, Kenneth Lorber wrote:
> From: Kenneth Lorber <keni@his.com>
> 
> Add a file of guidelines to prevent the namespace collisions
> mentioned in git help config without any guidance.
> 
> Signed-off-by: Kenneth Lorber <keni@his.com>
> ---

Since most users (including me) have never faced a namespace collision
with Git before, you might have to make a stronger case for why this
adding namespace collisions to documentation is important.

I honestly don't have enough knowledge of Git internals to talk about
any changes to the guidelines itself.

>  Documentation/gitrepository-layout.txt        |  1 +
>  .../technical/namespace-collisions.txt        | 86 +++++++++++++++++++
>  2 files changed, 87 insertions(+)
>  create mode 100644 Documentation/technical/namespace-collisions.txt
> 
> diff --git a/Documentation/gitrepository-layout.txt b/Documentation/gitrepository-layout.txt
> index 1a2ef4c150..a84a4df513 100644
> --- a/Documentation/gitrepository-layout.txt
> +++ b/Documentation/gitrepository-layout.txt
> @@ -290,6 +290,7 @@ worktrees/<id>/locked::
>  worktrees/<id>/config.worktree::
>  	Working directory specific configuration file.
>  
> +include::technical/namespace-collisions.txt[]
>  include::technical/repository-version.txt[]
>  
>  SEE ALSO
> diff --git a/Documentation/technical/namespace-collisions.txt b/Documentation/technical/namespace-collisions.txt
> new file mode 100644
> index 0000000000..fb79c82a73
> --- /dev/null
> +++ b/Documentation/technical/namespace-collisions.txt
> @@ -0,0 +1,86 @@
> +gitattributes
> +
> +
> +NAMESPACE COLLISIONS
> +--------------------

A convention I have noticed is that "========" is for the document
header and "--------" is for section headers.

> +Git uses identifiers in a number of different namespaces:
> +
> +* environment variables
> +* files in $GIT_DIR
> +* files in the working trees
> +* config sections
> +* hooks
> +* attributes
> +
> +In order to reduce the chance of collisions between names Git uses
> +and those used by other entities (users, groups, and extension authors),
> +the following are recommended best practices.
> +
> +Names reserved to Git:
> +
> +* file or directory names ending with `.lock`
> +* file or directory names starting with `.git`
> +* filenames in $GIT_DIR
> +* directory names in $GIT_DIR unless allowed by a rule below
> +* environment variables starting with `GIT_`
> +* configuration file sections unless allowed by a rule below
> +* file or directory names in `$GIT_DIR/hooks` unless allowed by a rule below
> +* attributes unless allowed by a rule below
> +
> +
> +Names reserved for individual users:
> +
> +* The directory `$GIT_DIR/my`
> +* Environment variables starting with `GIT_MY_`
> +* Configuration section `my`
> +* Files or directories in `$GIT_DIR/hooks` starting with `my_`
> +* Attributes starting with `my_`
> +
> +Names reserved for individual repos:
> +
> +* The directory `$GIT_DIR/this`
> +* Environment variables starting with `GIT_THIS_`
> +* Configuration section `this`
> +* Files or directories in `$GIT_DIR/hooks` starting with `this_`
> +* Attributes starting with `this_`
> +
> +Names reserved for the lowest level group of people:
> +
> +* The directory `$GIT_DIR/our`
> +* Environment variables starting with `GIT_OUR_`
> +* Configuration section `our`
> +* Files or directories in `$GIT_DIR/hooks` starting with `our_`
> +* Attributes starting with `our_`
> +
> +Names reserved for larger groups of people, for companies,
> +or for extensions that are distributed outside of the originating group:
> +
> +$ID is defined as a reverse DNS-style name, with dots replaced by
> +underscores (preferably) or by hyphens (if necessary).  The $ID
> +can have as many sections as possible, thus `com.example.sitename.projectid`
> +is perfectly reasonable.  Use of a name based on a domain you control is
> +highly recommended; if you do not control a domain, constructing the base of $ID
> +from your email address is a reasonable alternative, but use double delimiters
> +in place of the @ sign; for example: `com.example--root.project`
> +
> +* The directory $GIT_DIR/$ID
> +* Environment variables starting with `GIT__$ID_` (note two underscores)
> +* Configuration section `GIT--$ID`
> +* Files or directories in `$GIT_DIR/hooks` starting with $ID
> +* Attributes starting with `git__` (note two underscores)
> +
> +Aliases
> +~~~~~~~
> +Aliases are a special case.  Users need to type them so they should be
> +short, but there is no way to prevent such short names from colliding.
> +So the documentation or installer should construct something like:
> +
> +  [alias]
> +     test = !git my-test
> +     my-test = !echo made it
> +
> +while detecting collisions for the short name.  Then users or local
> +policy can deal with collisions on the short name.
> +
> +This is not meant to cover every possible use case - a policy that
> +detailed would be ignored and thus of no use.  Please play nicely.
> -- 
> 2.17.1
> 

Regards
Abhishek

  reply	other threads:[~2020-05-17  9:46 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-17  2:13 [RFC PATCH 0/6] various documentation bits Kenneth Lorber
2020-05-17  2:13 ` [RFC PATCH 1/6] Tell the glossary about core.hooksPath Kenneth Lorber
2020-05-17 18:33   ` Junio C Hamano
2020-05-18 22:06     ` Kenneth Lorber
2020-05-17  2:13 ` [RFC PATCH 2/6] Add bit on extending git to Hacking Git Kenneth Lorber
2020-05-17 18:34   ` Junio C Hamano
2020-05-18 22:10     ` Kenneth Lorber
2020-05-17  2:13 ` [RFC PATCH 3/6] Add namespace collision avoidance guidelines file Kenneth Lorber
2020-05-17  9:45   ` Abhishek Kumar [this message]
2020-05-18 15:51     ` Kenneth Lorber
2020-05-17 15:31   ` Junio C Hamano
2020-05-18 21:46     ` Kenneth Lorber
2020-05-17  2:13 ` [RFC PATCH 4/6] Include NAMESPACE COLLISIONS doc into gitrepository-layout.txt Kenneth Lorber
2020-05-18  0:26   ` Junio C Hamano
2020-05-18 23:54     ` Kenneth Lorber
2020-05-17  2:13 ` [RFC PATCH 5/6] Tell config.txt about NAMESPACE COLLISIONS Kenneth Lorber
2020-05-18  0:32   ` Junio C Hamano
2020-05-17  2:13 ` [RFC PATCH 6/6] Add NAMESPACE COLLISIONS reference to Hacking Git Kenneth Lorber
2020-05-17  7:42 ` [RFC PATCH 0/6] various documentation bits Abhishek Kumar
2020-05-17 18:39   ` Junio C Hamano
2020-05-18 23:44     ` Kenneth Lorber
2020-05-18 15:45   ` Kenneth Lorber
2020-05-25 23:27 ` [RFC PATCH v2 " Kenneth Lorber
2020-05-25 23:27   ` [RFC PATCH v2 1/6] doc: Tell the glossary about core.hooksPath Kenneth Lorber
2020-05-26 18:59     ` Junio C Hamano
2020-05-27 16:52       ` Kenneth Lorber
2020-05-27 17:18         ` Kenneth Lorber
2020-05-27 17:18         ` Junio C Hamano
2020-05-25 23:27   ` [RFC PATCH v2 2/6] doc: Add bit on extending git to Hacking Git Kenneth Lorber
2020-05-25 23:27   ` [RFC PATCH v2 3/6] doc: Add namespace collision guidelines file Kenneth Lorber
2020-05-28 18:49     ` Junio C Hamano
2020-05-28 19:29       ` Junio C Hamano
2020-05-29  1:20         ` Junio C Hamano
2020-05-29 18:08           ` Junio C Hamano
2020-06-01 23:55         ` Kenneth Lorber
2020-06-01 18:38       ` Kenneth Lorber
2020-05-25 23:27   ` [RFC PATCH v2 4/6] doc: Add collision doc to gitrepository-layout.txt Kenneth Lorber
2020-05-25 23:27   ` [RFC PATCH v2 5/6] doc: Tell config.txt about namespace collisions Kenneth Lorber
2020-05-25 23:27   ` [RFC PATCH v2 6/6] doc: Add collision reference to Hacking Git Kenneth Lorber
2020-05-31 21:37   ` [RFC PATCH 0/2] update glossary hooks entry Kenneth Lorber
2020-05-31 21:37     ` [RFC PATCH 1/2] doc: Tell the glossary about core.hooksPath Kenneth Lorber
2020-05-31 21:37     ` [RFC PATCH 2/2] doc: remove dated info and refs to sample hooks Kenneth Lorber

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=20200517094513.GA947@Abhishek-Arch \
    --to=abhishekkumar8222@gmail.com \
    --cc=1589681624-36969-4-git-send-email-keni@hers.com \
    --cc=git@vger.kernel.org \
    --cc=keni@hers.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).