Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
507 views
in Technique[技术] by (71.8m points)

version control - How to track config files of submodules in Git?

In Git, how can I organize work to track local config files of a library, which is a git submodule?

In details:

the library has normal files that are tracked, and default config files that are in it's folder, but not tracked, in order to avoid resetting or overwriting them (they're listed in .gitignore). All the files are in lib's folder or subfolders.

I started tracking one of the projects, that use this lib, in Git too. Now there's a dilemma:

  • if I make the lib in this project a submodule, I won't be able to track the config files (Git will ignore them, since they're in the submodule folder).

  • tracking everything as a big project is a bad idea, as I understand.

  • if I do track config files in the library, how can I avoid resetting them to default values? Do I make a branch in the working project and pull from master every time? Then, what if I edit the library and a config file in it? This must cause a merge conflict, doesn't it?

I guess this is not new, but I couldn't find any advice. I'll appreciate learning from your experience guys.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

When using a submodule, you should avoid making any modification because of the container (here: the project using the lib), because it will create a new revision on the history of the submodule.

It would be possible, for instance, for the lib, to reference config template files that can be the base for :

  • default value config files generation (the lib has a default value file archived, which can be used to generate a complete but not tracked config file)
  • or a custom config file generation (the project has its own config file values, and use it to generate at the same place within the lib a non-tracked config file)

A "config file template with tokenized values in it, and a script transforming that config.template file into a private (and ignored) config file" is the approach I suggested in this SO question about merge management.

Other more general advices on config files can be found in this SO question.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...