pygit2 0.20.3 introduces support for credentials

Changes:

  • Introduce support for credentials
  • Several memory issues fixed
  • Compatibility fixes for Python 3.3, PyPy3 and Visual Studio
  • And much more…

Thanks to Carlos Martín Nieto, Leonardo Rhodes, Devaev Maxim, Erik Meusel, Thomas Kluyver and earl.

Resources:

Enjoy!

pygit2 version 0.20.1 brings support for merge and reset

Changes:

  • New remote ref-specs API: #290
  • New Repository.reset(...): #292, #294
  • Export GIT_DIFF_MINIMAL: #293
  • New Repository.merge(...): #295
  • Fix Repository.blame argument handling: #297
  • Fix build error on Windows: #298
  • Fix typo in the README file, Blog → Blob: #301
  • Now Diff.patch returns None if no patch: #232, #303
  • New Walker.simplify_first_parent(): #304

Thanks to Jose Plana, Victor Garcia, Petr Hosek, Adam Spiers, Eric Schrijver,  Óscar San José and Xu Tao.

Resources:

Enjoy!

pygit2 0.20.0 adds support for blame

New in this release is support for blame, and upgrade to libgit2 0.20. Detailed list of changes follows.

Changes:

  • Renamed Repository.head_is_orphaned to Repository.head_is_unborn
  • Repository.listall_references and Repository.listall_branches now return a list, instead of a tuple
  • The prototype of clone_repository changed
  • Added support for blame
  • New:
    • Reference.log_append(...)
    • Reference.shorthand
    • Blog.is_binary
    • len(Diff)
    • Patch.additions
    • Patch.deletions
    • Patch.is_binary

Thanks to:

  • Carlos Martín Nieto
  • Xu Tao
  • Huang Huang
  • Petr Hosek

Resources:

Enjoy!

pygit2 0.19.1 released

New in this release is support for push. Detailed list of changes follows.

API changes:

  • Rename Commit._message to Commit.raw_message
  • Rename Signature._name to Signature.raw_name
  • Rename Signature._email to Signature.raw_email

New features:

  • Remote.push(refspec)
  • Tag.get_object()

And some bugs fixed.

Thanks to:

  • Brodie Rao
  • Fraser Tweedale
  • Andrew Chin
  • Carlos Martín Nieto

Resources:

Enjoy!

Collectd Front-ends

Finally, I found a good enough Collectd front-end: the Collectd Graph Panel (CGP). But first lets look at those front-ends which did not pass the exam:

  • Collectd-web is the first I tried, maybe because it is the only one with a package in Gentoo (but it is poor package, so I ended up installing from source). My main complain is that some graphs, like the very useful context-switches, don’t work. It is also quite slow generating the graphs.
  • Collection4, developed by the lead developer of collectd, did not even build. I did not insist.

Many of the front-ends listed in the collectd wiki page were discarded either because they looked like dead (no new commit in the last few years) or because their deployment process was too cumbersome (need to setup database…). But I still tried a few more:

  • Sickmuse is sleek. However there are some details in the way to deployment, like there is no option to make server to listen only the local interface. Alright, it’s just Python, I can fix it… Problem is, the build process requires to install npm (the Node.js package manager), just to install another package manager named Bower, just to install the JS and CSS. I mean, WTF?
  • Jarmon is very simple to deploy but requires to define every plugin in the front-end, i.e. it is unable to discover the hosts and plugins just like every other front-end does. So it is a pain in the ass to maintain.
  • Visage just shows nothing. I tried to add a host and plugins through the web interface, but the interface is buggy.

Like when looking for the keys, the answer was in the last pocket. Well, the CGP web site is designed to discourage potential users. There is no documentation. I had to dig a little to find out how to get it working with Nginx for instance.

Just one note about CGP, it has two modes to generate the graphs: PNG (the default) and canvas, to generate the graphs in the browser. The canvas mode did not work for me: zooming with the mouse scroll is so sensible it is unusable; it is slow, the fan in my notebook started to run like crazy; my browser even gave me some error like “This scripts is stalled, kill it?”. But the PNG mode is fine.

Conclusion. The weakness of Collectd is the lack of a good and well established front-end. Instead there are more than a dozen front-ends of varying quality. This is my selection:

  1. CGP. Don’t look any further, unless you have some free time.
  2. Visage. This one is promising, maybe I will try again once they get 3.0 out.
  3. Sickmuse. If it only was less trendy and more practical… Three things to improve: the build process, deployment and usability.

pygit2 0.19.0 released

Three months after the previous release I am happy to present a new major version of pygit2, the Python bindings for the libgit2 library. Follows a summary with the changes.

API changes:

  • New Oid type
  • Changed signature of Repository.create_reference
  • Reference.oid and Reference.hex removed, use Reference.target instead
  • Drop del Index[path] from the API, use Index.remove(path) instead
  • Drop TreeEntry.to_object
  • Changed signature of Repository.checkout
  • Repository.create_blob_from_file removed, use instead new methods
    Repository.create_blob_fromworkdir and
    Repository.create_blob_from_disk

New features:

  • Add len(TreeBuilder) and TreeBuilder.get
  • Add Repository.merge_base
  • Support changing the head with Repository.head = refname
  • Improved support for diff
  • Add support for clone
  • Python 2: Support hex oids as byte strings
  • Add Reference.get_object
  • Add Remote.save
  • Add support for branches, new type Branch

Other:

  • Upgraded to libgit2 0.19
  • Partial documentation review

Fourteen developers have contributed to this release, including myself, and:

  • Nico von Geyso
  • Daniel Rodríguez Troitiño
  • Bernardo Heynemann
  • Rémi Duraffort
  • Andrey Devyatkin
  • Hervé Cauwelier
  • Jiunn Haur Lim
  • Richo Healey
  • Carlos Martín Nieto
  • David Fischer
  • Fraser Tweedale
  • Jun Omae
  • Xu Tao

Resources:

Enjoy!

Munin, how to reduce IO with rrdcached

Few weeks ago Munin was flooding me with message alerts about IO latency, read or write, going too high. Ironically it turned out Munin was the culprit. And the solution was to use rrdcached.

Lets see a Munin graph that shows pretty well the difference using rrdcached made:

sda-month

Around week 21, when I deployed this optimization, writes dropped quite a lot and reads stabilized.

Now follows the step-by-step guide to use rrdcached (with Gentoo).

Continue reading

OVH: How to upgrade your kernel, if using Grub2

OVH, the hosting company where I have my dedicated serves, does some quality assurance on the Linux kernels, the ones it deploys on newly installed servers.

Now, after more than a year, there has been a new release. This is how upgraded the kernel on my Gentoo servers, which use Grub2:

# cd /boot
# wget ftp://ftp.ovh.net/made-in-ovh/bzImage/latest-production/bzImage-3.8.13-xxxx-grs-ipv6-64
# wget ftp://ftp.ovh.net/made-in-ovh/bzImage/latest-production/System.map-3.8.13-xxxx-grs-ipv6-64

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/bzImage-3.8.13-xxxx-grs-ipv6-64
done

Then reboot…

If you use Grub2, regardless of the distribution, it should work the same.

Backup MX for Mailman, with Exim

This week a hard disk from one of my servers broke. It has been replaced with just 3 minutes of downtime (kudos to OVH), and right now the RAID array is being rebuilt.

Since this is the first time this happens to me, and the server is running a production mailman service, I decided to take my time and set-up a backup MX server. This is how I did it.

Remember that I am using a Gentoo distribution, this may be slightly different in other distro. Continue reading