Re: [GSOC][RFC] Heed core.bare from template config file when no command line override given, as a microproject.
From: Christian Couder <hidden>
Date: 2024-01-04 10:24:15
On Tue, Jan 2, 2024 at 11:17 PM Ghanshyam Thakkar [off-list ref] wrote:
Hello, I'm currently an undergrad beginning my journey of contributing to the Git project. I am seeking feedback on doing "Heed core.bare from template config file when no command line override given" described here https://lore.kernel.org/git/5b39c530f2a0edf3b1492fa13a1132d622a0678e.1684218850.git.gitgitgadget@gmail.com/ (local) by Elijah Newren, as a microproject. I would like to know from the community, if the complexity and scope of the project is appropriate for a microproject.
Thanks for your interest in the next GSoC! My opinion is that it's too complex for a micro-project. Now maybe if Elijah or others are willing to help you on it, perhaps it will work out. I think it's safer to look at simpler micro-projects though.
e.g. in builtin/init-db.c :
static int template_bare_config(const char *var, const char *value,
const struct config_context *ctx, void *cb)
{
if(!strcmp(var,"core.bare")) {
We like to have a space character between "if" and "(" as well as after a ","
is_bare_repository_cfg = git_config_bool(var, value);
}
return 0;
}
int cmd_init_db(int argc, const char **argv, const char *prefix)
{
...
...
if(is_bare_repository_cfg==-1) {
We like to have a space character both before and after "==" as well
as between "if" and "(".
if(!template_dir)
git_config_get_pathname("init.templateDir",
&template_dir);
if(template_dir) {
const char* template_config_path
= xstrfmt("%s/config",
struct stat st;
if(!stat(template_config_path, &st) &&
!S_ISDIR(st.st_mode)) {
git_config_from_file(template_bare_cfg,
template_config_path, NULL);
}
}
...
...
return init_db(git_dir, real_git_dir, template_dir, hash_algo,
initial_branch, init_shared_repository, flags);
}
I also wanted to know if the global config files should have an effect
in deciding if the repo is bare or not.
Curious to know your thoughts on, if this is the right approach or
does it require doing refactoring to bring all the logic in setup.c.
Based on your feedback, I can quickly send a patch.I don't know this area of the code well, so I don't think I can help you much on this. Best, Christian.