diff --git a/roles/git/defaults/main.yml b/roles/git/defaults/main.yml new file mode 100644 index 0000000..036c38a --- /dev/null +++ b/roles/git/defaults/main.yml @@ -0,0 +1,15 @@ +--- + +git_config_file: ~/.gitconfig + +git_config_gpg_program: gpg2 +git_config_commit_gpgsign: false +git_config_pull_rebase: true +git_config_pull_ff: only +git_config_rebase_autostash: true +git_config_merge_autostash: true +git_config_init_default_branch: main +git_config_core_editor: vim + +git_config_user: [] +git_config_credentials: [] diff --git a/roles/git/tasks/main.yml b/roles/git/tasks/main.yml new file mode 100644 index 0000000..2fc2d69 --- /dev/null +++ b/roles/git/tasks/main.yml @@ -0,0 +1,45 @@ +--- + +- name: Ensure git configuration is persisted in git configs file + blockinfile: + dest: "{{ git_config_file }}" + mode: "0660" + create: yes + state: present + marker: "#{mark} ANSIBLE MANAGED BLOCK by finallycoffee.base.git" + block: |+2 + {% if git_config_user_name|default(false, true) and git_config_user_email|default(false, true) %} + [user] + name = {{ git_config_user_name }} + email = {{ git_config_user_email }} + {% if git_config_user_signingkey %} + signingkey = {{ git_config_user_signingkey }} + {% endif %} + {% endif %} + [gpg] + program = {{ git_config_gpg_program }} + [core] + editor = {{ git_config_core_editor }} + [commit] + gpgsign = {{ git_config_commit_gpgsign }} + [pull] + rebase = {{ git_config_pull_rebase }} + ff = {{ git_config_pull_ff }} + [rebase] + autostash = {{ git_config_rebase_autostash }} + [merge] + autostash = {{ git_config_merge_autostash }} + [init] + defaultBranch = {{ git_config_init_default_branch }} + [alias] + {% for alias in git_config_alias %} + {{ alias.name }} = {{ alias.command }} + {% endfor %} + + {% for credentialset in git_config_credentials %} + [credential "{{ credentialset.remote_url }}"] + {% for entry in credentialset.config | dict2items %} + {{ entry.key }} = {{ entry.value }} + {% endfor %} + + {% endfor %}