npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

git-po-merge

v0.1.0

Published

A git merge driver for Gettext .PO files

Downloads

229

Readme

git-po-merge

Build Status npm version

A git merge driver for repos with translations and i18n, the driver helps resolve .po file conflicts when merging or rebasing gettext catalogs.

Install

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

Install and update git config

This can be done one of two ways, globally or per-project/directory:

Globally

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

Single project / directory

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.

Verify install

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

Notes and caveats

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.

Dev

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:

  • https://gist.github.com/mezis/1605647
  • http://stackoverflow.com/questions/16214067/wheres-the-3-way-git-merge-driver-for-po-gettext-files