|
|
Subscribe / Log in / New account

Development

What's coming in Git 2.4.0

By Nathan Willis
April 8, 2015

The Git project recently turned ten years old, and a new stable release, version 2.4.0, is due shortly. While the development cycle leading up to Git 2.4 has focused largely on improving polish, there are a handful of interesting new features worth checking out, plus several changes that users need to be aware of for compatibility reasons.

A "preview" release candidate (-rc0) for Git 2.4.0 arrived on March 26; the first official release candidate (-rc1) followed on April 2. The release notes that accompany both announcements highlight a lengthy list of bugfixes (many of which have also been implemented in the current 2.3.x series) as well as a large set of improvements to the official documentation and to the terminal output returned by individual Git commands.

Some of those output fixes could have genuine impact on a user's workflow, of course. To cite one simple example, in previous releases, providing a non-existent name to the --author= parameter when making a commit would result in a rather terse error message that could leave users wondering what the source of the problem is. The new error message makes it explicit that the --author= parameter is at fault.

Output reporting success was improved, too; for example, the git apply --whitespace=fix command now actually returns a message whenever it fixes white-space problems. The release notes point out, though, that some of the changes to output formatting (in particular with git log and git branch) could result in backward incompatibilities. Users that parse the output from these commands in software will need to update their code.

For most users, though, it is new functionality that will attract the most attention. Topping the list for Git 2.4.0 might be the addition of the --atomic option when doing a push. Not to be confused with "the nuclear option," this switch is actually used when the push in question is meant to update more than one reference (say, HEAD and an important remote reference). Adding --atomic ensures that if any of those updates fails, all of the others will fail, too, thus keeping things from getting out of sync.

A push-to-deploy feature was added in Git 2.3, allowing users to use the push command to deploy changes directly onto a running system. That feature has seen some improvement for 2.4, with the user being able to customize the behavior of the server's repository using the push-to-checkout hook. The example included in the patch's documentation involves a hook that lets the server retain any locally-changed files that do not interfere with the changes being pushed. It is not clear at the moment how many people use Git to deploy software on live servers, but additional flexibility is certainly welcome for those who do.

Among the other tools, there are several new features to point out. An --invert-grep option has been added for the log command. As one would surmise from its name, this allows users to search their logs for commits that do not match a particular pattern. There is also a new GIT_TEST_CHAIN_LINT mechanism for use in test scripts. It allows users to check the syntax of their test scripts, hopefully avoiding those situations where a test is silently skipped because of a syntax error, but the resulting silence is interpreted as a passed test.

The status command already included a -v switch to enable verbose output, but that switch only displays a verbose diff between the index file and the current HEAD. Starting with Git 2.4.0, adding a second -v switch will also show a verbose diff of the uncommitted changes. The archive command can now set the text attribute (which specifies the end-of-line style) on the archive files it generates.

There are also a few new configuration options that may prove interesting. The versionsort.prerelease variable can be used to indicate that version numbers like "1.0-pre1" should come before "1.0." The push.followTags configuration variable makes the --follow-tags option the default for pushes.

The 2.4.0 release does not incorporate a large number of new features, but the significant set of small improvements is a testament to just how active the community remains. Git, even at ten years old, is still adapting to new use cases and the needs of new users.

That process does not appear to be slowing down, either. GitHub just announced a new feature that enables support for large files: audio and video, graphics, and data sets. Dubbed Large File Storage, the open-source extension replaces large files in the Git repository with pointers to external storage. No word yet on whether such a feature will find its way upstream, but considering the pace at which Git development moves now, it would not be a surprise, if enough users find it helpful.

Comments (13 posted)

Brief items

Quotes of the week

Back then, I was young and naive and deluded enough to think that porting Krita to a new version of Qt would automatically make Krita better. Porting itself was an exciting adventure, and using new technology was fun all by itself.

But porting to Qt 4 was a complete and utter disaster and it took us many years to finally get to a Qt 4-based version of Krita that was ready for users: Krita 2.4, released April 11th, 2012. There were reasons for that beyond the mere porting, of course, including the fact that, like fools, we couldn't resist doing a complete refactoring of the basic KOffice libraries.

Boudewijn Rempt reflects on some lessons learned the hard way.

But I'll just say: getting users back from what? Why do we need to convert the small pool of Linux users, when a larger pool of non-Linux users exists to be tapped?
Emmanuele Bassi

Since it makes pulling so difficult, perhaps we should change its name to Teeth instead of Git.
Richard Stallman

Comments (12 posted)

Libvpx 1.4.0 available

Libvpx 1.4.0 is now available. This update to the VP9/WebM video library includes 64-bit ARM support and "Significant algorithmic improvements to VP9 encoding, support for YUV 4:2:2 and 4:4:4 colorspaces as well as high bit depth (10 and 12 bit)". There are also several multithreading improvements; as the announcement explains: "VP9 decoder now has two multithreaded modes: tile based and frame based. The encoder now enables these by default to help ensure your encoded content will be able to take advantage of these modes."

Comments (none posted)

Rust 1.0 beta released

The Rust team at Mozilla Research has announced the first beta release of Rust 1.0. The release notes detail a number of important changes, but the announcement adds some additional noteworthy items. "The Beta release also marks a turning point in our approach to stability. During the alpha cycle, the use of unstable APIs and language features was permitted, but triggered a warning. As of the Beta release, the use of unstable APIs will become an error (unless you are using Nightly builds or building from source)." A new continuous-integration infrastructure has also been deployed. The final release is currently expected around May 15.

Comments (77 posted)

Free pattern making software Valentina 0.3 released (Libre Graphics World)

Libre Graphics World takes a look at the latest version of the Valentina free-software pattern-making application. The new features include undo/redo support, improvements to measuring, support for multiple measurement units, and automatic layout of patterns for printing. The article also details several upcoming additions. "As for 2D-to-3D workflow, Valentina already supports basic exporting of Wavefront OBJ files. Going further is likely to be a challenging, yet quite rewarding enterprise. Imagine previewing the clothes in MakeHuman on a model that uses body measurements you made with a tape measure, or using clothes simulation in Blender."

Comments (none posted)

DigiKam 4.9.0 released

Version 4.9.0 of digiKam is now available. A large number of bug fixes are included in this release; the development focus remains porting digiKam to KDE Frameworks 5.

Comments (none posted)

Evergreen 2.8.0 released

A new release of the Evergreen open-source library-management system has been announced. Version 2.8.0 includes a number of improvements to the material-acquisition system, a mechanism for libraries to send out messages to library patrons, enhancements to the billing system and "on hold" functionality, and much more.

Comments (none posted)

BlueZ 5.30 available

Version 5.30 of the BlueZ Linux Bluetooth framework has been released. "The highlight of this release is the completion of the GATT D-Bus APIs. We’ve now got both the client and server functionality in place, however it’s still behind the -E (–experimental) command line switch." Also new in this version is an API for managing Bluetooth Low Energy "advertising," which allows the BlueZ device to behave like a Bluetooth peripheral.

Comments (none posted)

Konversation 1.6 released

Konversation, the KDE IRC client, has been updated to version 1.6. This release updates the application for KDE Frameworks 5 and Qt5, though it also breaks integration with the KDE Address Book. On the plus side, high-DPI support is included and the on-screen layout has been refreshed.

Full Story (comments: none)

GnuTLS 3.4.0 released

Version 3.4.0 of the GnuTLS library has been released. Changes include support for the AES-CCM, AES-CCM-8, and Chacha20-Poly1305 ciphersuites (although the latter two must be enabled explicitly) and support for encrypt-then-authenticate in CBC ciphersuites.

Full Story (comments: none)

Newsletters and articles

Development newsletters from the past week

Comments (none posted)

10 Years of Git: An Interview with Git Creator Linus Torvalds (Linux.com)

Linux.com talks with Linus Torvalds about the development of Git. "Just to pick an example: the concept of 'merging' was generally considered to be something really quite painful and hard in most SCM's. You'd plan your merges, because they were big deals. That's not acceptable to me, since I commonly do tens of merges a day when in the merge window, and even then, the biggest overhead shouldn't be the merge itself, it should be testing the result. The 'git' part of the merge is just a couple of seconds, it should take me much longer just to write the merge explanation message."

Comments (80 posted)

What to Expect When You're Expecting: PHP 7, Part 1 (Engine Yard)

The Engine Yard blog has an introduction to the changes coming in the PHP 7 release. "My personal favorite addition to PHP 7 is the addition of the Combined Comparison Operator, <=>,otherwise known as the spaceship operator. [...] It effectively works like strcmp(), or version_compare(), returning -1 if the left operand is smaller than the right, 0 if they are equal, and 1 if the left is greater than the right. The major difference being that it can be used on any two operands, not just strings, but also integers, floats, arrays, etc."

Comments (37 posted)

Page editor: Nathan Willis
Next page: Announcements>>


Copyright © 2015, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds