We have a huge application where we do all our development in IntelliJ. One main folder in this big application is called installation-media-maker. In here we do a lot, such as:
- creating NSIS installers.
- creating .exe launchers.
- creating custom reduced JRE distributions.
- creating compressed datasets and assets.
- creating a compressed, obfuscated, reduced and customized distribution of our main bulk code base. This is accomplished by having a staging folder in here and checking out via git from our stagging and/or production git repo. Thus, we sort of have a git within a git and the command we run is either
git clone --depth 1 %REPO_URL%
git pull --depth 1 --allow-unrelated-histories %REPO_URL%
After we have all these "pieces" built discretely, we then have a process that assembles all these pieces, zips them, creates checksums, uploads to our download site, etc... for a variety of distributions that are OS, processor architecture and client specific.
I think the root of my problems is this git within a git, the symptoms are as follows and are absolutely killing me... please help:
- When I change 5 files and only push 2 of them (via normal intelliJ push), the other 3 files are reverted to whatever the repo has and my changes are lost.
- When I look at local history, it appears that many files have the local history lost.
- When I look at local history, I usually see a line that says "external change" and that seems to be where my changes were overwritten.
- When I pull from our main developers repo, it appears to update the stagging area for our app even though this area is excluded and ignored. Sometimes it seems changes are undone by this as well.
- I see "Performing VCS refresh" way to often. It takes a little while, but not as long as it took before I excluded and ignored all the stagging areas.