# Allow adding files from git submodule to parent git repo if they are in .gitignore in the submodule

2 messages from 2023-12-13 to 2023-12-13. Participants: Alexey Murz Korepov, Junio C Hamano.
Thread: https://gitlist.dev/t/60611

## Alexey Murz Korepov, 2023-12-13 11:07

Subject: Allow adding files from git submodule to parent git repo if they are in .gitignore in the submodule
Message-ID: <CAL5pyKseyxEfLbgEkDHSqWQVLGkrrcZU=BzRx2zZOaCdQbMaoA@mail.gmail.com>
URL: https://gitlist.dev/e/CAL5pyKseyxEfLbgEkDHSqWQVLGkrrcZU%3DBzRx2zZOaCdQbMaoA%40mail.gmail.com

```
Git submodules are pretty often used to "import" some external git
repository into your git repository, to not manage its files in your
git tree, that's good.

But very often we need to add some file to that submodule and manage
it in our local git repository, and this file is usually in .gitignore
in the submodule's git.

So, the example task is:

Copy a mysubmodule/config.example.yaml to mysubmodule/config.yaml
(which is in .gitignore in the mysubmodule), make local changes, and
store it in the local (parent) root git repo.

But the problem is that we can't add this mysubmodule/config.yaml file
to our root git repository, because receiving an error:
ˋˋˋ
$ git add -f mysubmodule/config.yaml
fatal: Pathspec 'mysubmodule/config.yaml' is in submodule 'mysubmodule'
ˋˋˋ
But I see no problems with doing this, if the file is in .gitignore of
the mysubmodule submodule.

So, let's discuss the approach of how we can allow this in git?

Or will be glad to hear and discuss alternatives and workarounds for this task.

```

## Junio C Hamano, 2023-12-13 15:38

Subject: Re: Allow adding files from git submodule to parent git repo if they are in .gitignore in the submodule
Message-ID: <xmqq34w6nmd8.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqq34w6nmd8.fsf%40gitster.g
In-Reply-To: <CAL5pyKseyxEfLbgEkDHSqWQVLGkrrcZU=BzRx2zZOaCdQbMaoA@mail.gmail.com>

```
Alexey Murz Korepov <murznn@gmail.com> writes:

> ˋˋˋ
> $ git add -f mysubmodule/config.yaml
> fatal: Pathspec 'mysubmodule/config.yaml' is in submodule 'mysubmodule'
> ˋˋˋ
> But I see no problems with doing this, if the file is in .gitignore of
> the mysubmodule submodule.
>
> So, let's discuss the approach of how we can allow this in git?

What should happen when mysubmodule/.gitignore changes?  Who
guarantees that such a file stolen by the superproject will stay in
the .gitignore file in the submodule?

I do not think you want to go there, and I do not think I want to
see such a behaviour in Git, as we would be the ones who will be
blamed for the resulting mess.

The right solution probably is to keep such a file in a directory
that is separate from the directory where you bind your submodule.
Track the file in the superproject, and have a build procedure to
copy it into the submodule directory (as an untracked file, of
course).

```
