diff mbox series

[9/9] docs: document symlink restrictions for dot-files

Message ID YI13DTkOpDRP4YGa@coredump.intra.peff.net (mailing list archive)
State Superseded
Headers show
Series leftover bits from symlinked gitattributes, etc topics | expand

Commit Message

Jeff King May 1, 2021, 3:43 p.m. UTC
We stopped allowing symlinks for .gitmodules files in 10ecfa7649
(verify_path: disallow symlinks in .gitmodules, 2018-05-04), and we
stopped following symlinks for .gitattributes, .gitignore, and .mailmap
in the commits from 204333b015 (Merge branch 'jk/open-dotgitx-with-nofollow',
2021-03-22). The reasons are discussed in detail there, but we never
adjusted the documentation to let users know.

This hasn't been a big deal since the point is that such setups were
mildly broken and thought to be unusual anyway. But it certainly doesn't
hurt to be clear and explicit about it.

Suggested-by: Philip Oakley <philipoakley@iee.email>
Signed-off-by: Jeff King <peff@peff.net>
---
 Documentation/gitattributes.txt | 7 +++++++
 Documentation/gitignore.txt     | 5 +++++
 Documentation/gitmailmap.txt    | 7 +++++++
 Documentation/gitmodules.txt    | 8 ++++++++
 4 files changed, 27 insertions(+)

Comments

Eric Sunshine May 1, 2021, 7:16 p.m. UTC | #1
On Sat, May 1, 2021 at 11:43 AM Jeff King <peff@peff.net> wrote:
> We stopped allowing symlinks for .gitmodules files in 10ecfa7649
> (verify_path: disallow symlinks in .gitmodules, 2018-05-04), and we
> stopped following symlinks for .gitattributes, .gitignore, and .mailmap
> in the commits from 204333b015 (Merge branch 'jk/open-dotgitx-with-nofollow',
> 2021-03-22). The reasons are discussed in detail there, but we never
> adjusted the documentation to let users know.
>
> This hasn't been a big deal since the point is that such setups were
> mildly broken and thought to be unusual anyway. But it certainly doesn't
> hurt to be clear and explicit about it.

Just a really microscopic nit... feel free to ignore...

> diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
> @@ -1247,6 +1247,13 @@ to:
> +NOTES
> +-----
> +
> +Note that Git does not follow symbolic links when accessing a
> +`.gitattributes` file in the working tree. This keeps behavior
> +consistent when the file is accessed from the index or a tree versus
> +from the filesystem.

We're in the "NOTES" section, so it feels redundant to begin the
sentence with "Note that".

> diff --git a/Documentation/gitmodules.txt b/Documentation/gitmodules.txt
> @@ -98,6 +98,14 @@ submodule.<name>.shallow::
> +NOTES
> +-----
> +
> +Note that Git does not allow the `.gitmodules` file within a working
> +tree to be a symbolic link, and will refuse to check out such a tree
> +entry. This keeps behavior consistent when the file is accessed from the
> +index or a tree versus from the filesystem, and helps Git reliably
> +enforce security checks of the file contents.

Ditto.
Jeff King May 3, 2021, 8:33 p.m. UTC | #2
On Sat, May 01, 2021 at 03:16:09PM -0400, Eric Sunshine wrote:

> Just a really microscopic nit... feel free to ignore...
> 
> > diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
> > @@ -1247,6 +1247,13 @@ to:
> > +NOTES
> > +-----
> > +
> > +Note that Git does not follow symbolic links when accessing a
> > +`.gitattributes` file in the working tree. This keeps behavior
> > +consistent when the file is accessed from the index or a tree versus
> > +from the filesystem.
> 
> We're in the "NOTES" section, so it feels redundant to begin the
> sentence with "Note that".

Thanks. I think it's a good suggestion. I agree it's pretty minor, but
I'm going to re-roll anyway to drop the test_i18ngrep, so I'll reword
this, too.

-Peff
diff mbox series

Patch

diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
index cfcfa800c2..dfda94d996 100644
--- a/Documentation/gitattributes.txt
+++ b/Documentation/gitattributes.txt
@@ -1247,6 +1247,13 @@  to:
 [attr]binary -diff -merge -text
 ------------
 
+NOTES
+-----
+
+Note that Git does not follow symbolic links when accessing a
+`.gitattributes` file in the working tree. This keeps behavior
+consistent when the file is accessed from the index or a tree versus
+from the filesystem.
 
 EXAMPLES
 --------
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt
index 5751603b13..4b6fd8d2cd 100644
--- a/Documentation/gitignore.txt
+++ b/Documentation/gitignore.txt
@@ -149,6 +149,11 @@  not tracked by Git remain untracked.
 To stop tracking a file that is currently tracked, use
 'git rm --cached'.
 
+Note that Git does not follow symbolic links when accessing a
+`.gitignore` file in the working tree. This keeps behavior consistent
+when the file is accessed from the index or a tree versus from the
+filesystem.
+
 EXAMPLES
 --------
 
diff --git a/Documentation/gitmailmap.txt b/Documentation/gitmailmap.txt
index 3fb39f801f..eb65eeb37f 100644
--- a/Documentation/gitmailmap.txt
+++ b/Documentation/gitmailmap.txt
@@ -55,6 +55,13 @@  this would also match the 'Commit Name <commit&#64;email.xx>' above:
 	Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>
 --
 
+NOTES
+-----
+
+Note that Git does not follow symbolic links when accessing a `.mailmap`
+file in the working tree. This keeps behavior consistent when the file
+is accessed from the index or a tree versus from the filesystem.
+
 EXAMPLES
 --------
 
diff --git a/Documentation/gitmodules.txt b/Documentation/gitmodules.txt
index 8e333dde1b..ca1c42b405 100644
--- a/Documentation/gitmodules.txt
+++ b/Documentation/gitmodules.txt
@@ -98,6 +98,14 @@  submodule.<name>.shallow::
 	shallow clone (with a history depth of 1) unless the user explicitly
 	asks for a non-shallow clone.
 
+NOTES
+-----
+
+Note that Git does not allow the `.gitmodules` file within a working
+tree to be a symbolic link, and will refuse to check out such a tree
+entry. This keeps behavior consistent when the file is accessed from the
+index or a tree versus from the filesystem, and helps Git reliably
+enforce security checks of the file contents.
 
 EXAMPLES
 --------