Recommended Ansible Git configuration
The following file contains ansible tasks for a given user (identified by username) to set up the recommended Git configuration. It includes setting the user’s name and email, configuring the editor, setting up credential management, defining aliases, and configuring color settings.
ansible_git_config.yml
- name: Set git user name
git_config:
name: user.name
value: "{{ fullname }}"
scope: global
become: true
become_user: "{{ username }}"
- name: Set git user email
git_config:
name: user.email
value: "{{ email }}"
scope: global
become: true
become_user: "{{ username }}"
- name: Set git editor to code
git_config:
name: core.editor
value: "code"
scope: global
become: true
become_user: "{{ username }}"
- name: Run git-credential-manager configure
command: git-credential-manager configure
become: true
become_user: "{{ username }}"
- name: Configure git credential store
git_config:
name: credential.credentialStore
value: "plaintext"
scope: global
become: true
become_user: "{{ username }}"
- name: Configure git aliases
git_config:
name: "alias.{{ item.name }}"
value: "{{ item.value }}"
scope: global
become: true
become_user: "{{ username }}"
loop:
- { name: "st", value: "status" }
- { name: "ci", value: "commit" }
- { name: "br", value: "branch" }
- { name: "co", value: "checkout" }
- { name: "df", value: "diff" }
- { name: "lg", value: "log -p" }
- { name: "lol", value: "log --graph --decorate --pretty=oneline --abbrev-commit" }
- { name: "lola", value: "log --graph --decorate --pretty=oneline --abbrev-commit --all" }
- { name: "mr", value: "!sh -c 'git switch master ; git branch -D mr-$1-$2 ; git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -" }
- { name: "pu", value: "!sh -c 'git switch master ; git pull upstream master'" }
- { name: "r", value: "!r() { git rebase -i HEAD~$1; }; r" }
- { name: "rium", value: "rebase -i upstream/master" }
- { name: "rum", value: "rebase upstream/master" }
- { name: "rhum", value: "reset --hard upstream/master" }
- { name: "pusu", value: "!git push --set-upstream origin $(git symbolic-ref --short HEAD)" }
- { name: "sc", value: "!git switch -c" }
- name: Configure git color settings
git_config:
name: "color.{{ item }}"
value: "auto"
scope: global
become: true
become_user: "{{ username }}"
loop:
- diff
- status
- branch
- name: Configure git push settings
git_config:
name: "{{ item.name }}"
value: "{{ item.value }}"
scope: global
become: true
become_user: "{{ username }}"
loop:
- { name: "push.default", value: "tracking" }
- { name: "push.autoSetupRemote", value: "true" }
- name: Configure git diff settings
git_config:
name: "{{ item.name }}"
value: "{{ item.value }}"
scope: global
become: true
become_user: "{{ username }}"
loop:
- { name: "diff.renamelimit", value: "0" }
- { name: "diff.algorithm", value: "patience" }If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow