Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save gsusmonzon/13f1137c9435664a958e47c2a3a0a36d to your computer and use it in GitHub Desktop.

Select an option

Save gsusmonzon/13f1137c9435664a958e47c2a3a0a36d to your computer and use it in GitHub Desktop.
Mergiraf for macOS and Ruby + JS
brew install mergiraf
git config --global rerere.enabled true
# zdiff3 can confuse Mergiraf in some cases. Use diff3 if it behaves badly
git config --global merge.conflictstyle zdiff3
git config --global merge.mergiraf.name mergiraf
git config --global merge.mergiraf.driver 'mergiraf merge --git %O %A %B -s %S -x %X -y %Y -p %P -l %L'
git config --global merge.mergiraf.recursive binary
mkdir -p ~/.config/git
touch ~/.config/git/attributes
set start '# BEGIN mergiraf'
set end '# END mergiraf'
set tmp (mktemp)
awk -v start="$start" -v end="$end" '
$0 == start { skip=1; next }
$0 == end { skip=0; next }
!skip { print }
' ~/.config/git/attributes > $tmp
begin
cat $tmp
echo $start
echo '*.js merge=mergiraf'
echo '*.jsx merge=mergiraf'
echo '*.ts merge=mergiraf'
echo '*.tsx merge=mergiraf'
echo '*.json merge=mergiraf'
echo '*.rb merge=mergiraf'
echo 'Gemfile merge=mergiraf'
echo 'Gemfile.lock merge=mergiraf'
echo 'package-lock.json merge=mergiraf'
echo 'yarn.lock merge=mergiraf'
echo 'pnpm-lock.yaml merge=mergiraf'
echo $end
end > ~/.config/git/attributes
rm $tmp
git config --global core.attributesfile ~/.config/git/attributes
mergiraf --version
git config --global --get-regexp 'merge\.mergiraf|rerere|merge\.conflictstyle|core\.attributesfile'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment