A git merge driver for repos with translations and i18n, the driver helps resolve .po file conflicts when merging or rebasing gettext catalogs.
Git-po-merge requires msgcat
, a tool included when installing gettext
.
Try:
msgcat --version
If missing and using OSX, gettext is available via homebrew:
brew install gettext
brew link gettext --force
This can be done one of two ways, globally or per-project/directory:
Install:
npm install --global git-po-merge
Add to ~/.gitconfig
:
[core]
attributesfile = ~/.gitattributes
[merge "pofile"]
name = custom merge driver for gettext po files
driver = git-po-merge %A %O %B
Create ~/.gitattributes
:
*.po merge=pofile
*.pot merge=pofile
Install:
npm install git-po-merge --save-dev
Update git config:
git config merge.pofile.driver "$(npm bin)/git-po-merge %A %O %B"
git config merge.pofile.name "custom merge driver for gettext po files"
Add the same .gitattributes
where desired and commit.
Note .gitattributes
is only used after committed.
git-po-merge # or $(npm bin)/git-po-merge
> usage: git-po-merge [-s] our.po base.po their.po
touch messages.po
git check-attr -a messages.po
> messages.po: merge: pofile
git-po-merge messages.po messages.po messages.po
> Resolving po conflict with git-merge-po... done.
git merge [some branch with translation changes that conflict]
> Resolving po conflict with git-merge-po... done.
> Resolving po conflict with git-merge-po... done.
> Auto-merging project/locale/fr/LC_MESSAGES/messages.po
> Auto-merging project/locale/es/LC_MESSAGES/messages.po
Git only calls the driver in the event of a conflict and will always attempt a traditional 3-way merge first.
The git-merge-po driver will restore messages marked obsolete if the message is active in any po being merged. Good practice is to remake messages after any merge or rebase.
node --version # using v0.12
npm install --global .
npm link
npm test
Helpful docs:
- http://git-scm.com/docs/gitattributes#_defining_a_custom_merge_driver
- http://stackoverflow.com/questions/28026767/where-should-i-place-my-global-gitattributes-file
Thanks: