On 2025-02-06 at 14:10:44, USA Linux UAE wrote: > Hi everyone, > > I'm hoping to get some advice on managing a GitHub repository with a > slightly complex setup. We have a main repo that utilizes both a > .gitignore file and submodules. Our goal is to push this repo to two > different remote repositories (let's call them remote_A and remote_B), > but with a key difference: > > remote_A should respect the .gitignore file as usual, excluding the > files and directories specified within it. > remote_B should effectively ignore the .gitignore file, and include > all files and directories, even those listed in .gitignore. > Essentially, we want the opposite behavior of .gitignore for remote_B. Unfortunately, there is no easy way to do what you want because you essentially have two separate, independent, and diverging histories. Git doesn't offer functionality to push only part of the history, and `.gitignore` is honoured when files are added, not when pushing. Once files have been added, `.gitignore` has no effect. > Additionally, we need to ensure the submodules are handled correctly > for both remotes. Ideally, the submodule pointers should remain > consistent, regardless of which remote we're pushing to. > > > Could anyone offer advice on the best approach for this scenario? Are > there any recommended workflows or tools specifically designed for > this type of setup? Any insights regarding submodule management in > this context would be greatly appreciated. The best way to do what you want is to put the extra files from the second case in a separate submodule, which can be pushed to server B but not server A. You may want to add a script to handle the case where they do or don't exist and place them in the proper place via copy or symlink if they're present. You'll want to ignore them in the main repo, though, since you don't want them to be checked in accidentally. -- brian m. carlson (they/them or he/him) Toronto, Ontario, CA
Attachment:
signature.asc
Description: PGP signature