Wednesday, August 17, 2011

Didn't I already say I am no longer a youngster?

Now the k.org machine(s) seem to be getting updated, it is time for me to update a set of VMs I keep to build-test Git and cut RPM packages for their use.

Prepared an empty VM and installed FC14 (last time I somehow got an impression that they only use odd-numbered releases at k.org, so I had a spare FC15 prepared and have been practicing RPM generation on it, although I never deployed the packages anywhere).

  • Chose "Software Development" target (earlier in the day I tried "Minimum" but I had too many troubles configuring it);
  • Use fixed network configuration - make it available at boot and for everybody to prevent network manager from getting in the way;
  • Add myself as a user, with UID/GID that match what I use on the main machine;
  • Added entries for /home and /git NFS mountpoints in /etc/fstab, like so:
    mothership:/home /home nfs defaults,noatime 0 0
    mothership:/git /git nfs defaults,noatime 0 0
  • Disabled SELinux by editing /etc/sysconfig/selinux and saying SELINUX=disabled there;
  • Disabled X by editing /etc/inittab and saying id:3:initdefault: there.
That got me a basic working environment. It seems that it went a lot smoother than FC15 which I wrote about earlier. Then added:
  • screen
  • redhat-lsb (needed for /usr/bin/lsb_release)
It wants to use ccache and wants to put temporary in $HOME! Sheesh - caching over NFS? With this:

 $ yum remove ccache.i686

regular build starts working. Documentation build needs a few more packages:
  • asciidoc
  • xmlto
I choose not to install perl-SVN-Simple package so that I don't have to spend time running the git-svn tests on this VM.

Tuesday, July 19, 2011

著者献本 (Author's complimentary copy?)

Somebody wrote a Git book and published it in China.

And sent an author's complimentary copy to me across Pacific. Very nice. I am reasonably sure that Linus is going to receive the same.

Unfortunately I cannot read Chinese, and I can only guess what each section is teaching, but it nevertheless is nice to feel that our work is appreciated.

Thanks, Jiang Xin (蒋鑫).

Thursday, July 14, 2011

Fun with bisecting

You receive a series to fix an old bug, and the patches apply cleanly to your mainline. It even came with its own test suite to make sure that the fix is correct. It's a maintainer's heaven!

You apply them and run tests, and all seem to go well.

But this series is meant to fix an old bug, so you would want to back-port it on top of an older maintenance branch. After spending some time running "git rebase -i" and resolving conflicts, everything compiles. Victory!

Not so fast. The tests start to fail.

Perhaps you botched the back-porting effort? After merging the older maintenance branch with the series with the tip of the current mainline, you find that it gives the identical result as your earlier attempt to apply the series directly on top of the mainline. There wasn't any mistake in conflict resolution you did.

Now what?

Wednesday, July 6, 2011

Cycle 1.7.7 begins

During the first week since 1.7.6 release...

  • Merged topics that have been cooking in the next branch for a while to the master branch to release them as part of 1.7.7 release;
  • Updated the Git Calendar for the next cycle.
As I ended up working on some topics around large-ish objects during the last cycle, I may continue to do so during this cycle as well. I am currently looking at a few aspects of pack-objects and fsck.



Queued 19 patches from 8 people.
Made 18 merges to 'master' branch, to include in the next release.
Made 35 merges to 'next' branch for public testing.
Made 2 merges to 'maint' branch, to include in the maintenance release.

Sunday, June 26, 2011

Git 1.7.6

Git v1.7.6 Release Notes
========================

Updates since v1.7.5
--------------------

 * Various git-svn updates.

 * Updates the way content tags are handled in gitweb.  Also adds
   a UI to choose common timezone for displaying the dates.

 * Similar to branch names, tagnames that begin with "-" are now
   disallowed.

 * Clean-up of the C part of i18n (but not l10n---please wait)
   continues.

 * The scripting part of the codebase is getting prepared for i18n/l10n.

 * Pushing and pulling from a repository with large number of refs that
   point to identical commits are optimized by not listing the same commit
   during the common ancestor negotiation exchange with the other side.

 * Adding a file larger than core.bigfilethreshold (defaults to 1/2 Gig)
   using "git add" will send the contents straight to a packfile without
   having to hold it and its compressed representation both at the same
   time in memory.

 * Processes spawned by "[alias] <name> = !process" in the configuration
   can inspect GIT_PREFIX environment variable to learn where in the
   working tree the original command was invoked.

 * A magic pathspec ":/" tells a command that limits its operation to
   the current directory when ran from a subdirectory to work on the
   entire working tree. In general, ":/path/to/file" would be relative
   to the root of the working tree hierarchy.

   After "git reset --hard; edit Makefile; cd t/", "git add -u" would
   be a no-op, but "git add -u :/" would add the updated contents of
   the Makefile at the top level. If you want to name a path in the
   current subdirectory whose unusual name begins with ":/", you can
   name it by "./:/that/path" or by "\:/that/path".

 * "git blame" learned "--abbrev[=<n>]" option to control the minimum
   number of hexdigits shown for commit object names.

 * "git blame" learned "--line-porcelain" that is less efficient but is
   easier to parse.

 * Aborting "git commit --interactive" discards updates to the index
   made during the interactive session.

 * "git commit" learned a "--patch" option to directly jump to the
   per-hunk selection UI of the interactive mode.

 * "git diff" and its family of commands learned --dirstat=0 to show
   directories that contribute less than 0.1% of changes.

 * "git diff" and its family of commands learned --dirstat=lines mode to
   assess damage to the directory based on number of lines in the patch
   output, not based on the similarity numbers.

 * "git format-patch" learned "--quiet" option to suppress the output of
   the names of generated files.

 * "git format-patch" quotes people's names when it has RFC822 special
   characters in it, e.g. "Junio C. Hamano" <jch@example.com>.  Earlier
   it was up to the user to do this when using its output.

 * "git format-patch" can take an empty --subject-prefix now.

 * "git grep" learned the "-P" option to take pcre regular expressions.

 * "git log" and friends learned a new "--notes" option to replace the
   "--show-notes" option.  Unlike "--show-notes", "--notes=<ref>" does
   not imply showing the default notes.

 * They also learned a log.abbrevCommit configuration variable to augment
   the --abbrev-commit command line option.

 * "git ls-remote" learned "--exit-code" option to consider it a
   different kind of error when no remote ref to be shown.

 * "git merge" learned "-" as a short-hand for "the previous branch", just
   like the way "git checkout -" works.

 * "git merge" uses "merge.ff" configuration variable to decide to always
   create a merge commit (i.e. --no-ff, aka merge.ff=no), refuse to create
   a merge commit (i.e. --ff-only, aka merge.ff=only). Setting merge.ff=yes
   (or not setting it at all) restores the default behaviour of allowing
   fast-forward to happen when possible.

 * p4-import (from contrib) learned a new option --preserve-user.

 * "git read-tree -m" learned "--dry-run" option that reports if a merge
   would fail without touching the index nor the working tree.

 * "git rebase" that does not specify on top of which branch to rebase
   the current branch now uses @{upstream} of the current branch.

 * "git rebase" finished either normally or with --abort did not
   update the reflog for HEAD to record the event to come back to
   where it started from.

 * "git remote add -t only-this-branch --mirror=fetch" is now allowed. Earlier
   a fetch-mode mirror meant mirror everything, but now it only means refs are
   not renamed.

 * "git rev-list --count" used with "--cherry-mark" counts the cherry-picked
   commits separately, producing more a useful output.

 * "git submodule update" learned "--force" option to get rid of local
   changes in submodules and replace them with the up-to-date version.

 * "git status" and friends ignore .gitmodules file while the file is
   still in a conflicted state during a merge, to avoid using information
   that is not final and possibly corrupt with conflict markers.

Also contains various documentation updates and minor miscellaneous
changes.


Fixes since v1.7.5
------------------

Unless otherwise noted, all the fixes in 1.7.5.X maintenance track are
included in this release.

 * "git config" used to choke with an insanely long line.
   (merge ef/maint-strbuf-init later)

 * "git diff --quiet" did not work well with --diff-filter.
   (merge jk/diff-not-so-quick later)

 * "git status -z" did not default to --porcelain output format.
   (merge bc/maint-status-z-to-use-porcelain later)

Saturday, June 25, 2011

More Fun with Nook Simple Touch

Earlier I wrote about my new toy, Nook Simple Touch. Using the instruction at nookdevs (which was originally written for Nook Color, so I had to improvise a bit), I managed to tell Market and Google eBooks who I am and now I have both working.


There are screens in Market that I cannot read anything (e.g. application description); I am guessing either the application is trying to render the text in a color that is too faint on the grayscale display (unlikely but possible), or wants to use specific font not available on Nook, but haven't dug into the issue (yet).

A purchased Google eBook can be downloaded (on a PC) in the format that can be read on Nook via Adobe Digital Edition, so I have the same book readable in both Google eBooks application, and in the native Nook application. The formatting in Google eBooks for the particular book I tried was miserable (but that is the same as on my XOOM and not the fault of Nook Simple Touch device).

Wednesday, June 22, 2011

Cycle 1.7.6, day #3 of week #9

Previous reviews resulted in a few topics to be re-rolled and/or rebased.
With Shawn, met David Barr who was in town.

Earlier I was planning to skip 1.7.6-rc3 and go straight to 1.7.6 final, but decided to do a final round anyway.

Sent out the fourth issue of "What's cooking" summary for the month.

For the first time, FC15 test bochs managed to produce the set of release RPMs (I had missing build-dependencies here and there but this has never been a high priority for me, so...).


Commented on 6 topics on the list.
Tagged v1.7.6-rc3.
Queued 28 patches from 6 people.

Git 1.7.6-rc3

Just a small update before the final 1.7.6 happens at the end of this week. Please test it well.

It is available at the usual places for the final round of testing:

  http://www.kernel.org/pub/software/scm/git/

  git-1.7.6.rc3.tar.{gz,bz2}                    (source tarball)
  git-htmldocs-1.7.6.rc3.tar.{gz,bz2}           (preformatted docs)
  git-manpages-1.7.6.rc3.tar.{gz,bz2}           (preformatted docs)

The RPM binary packages for a few architectures are found in:

  testing/git-*-1.7.6.rc3-1.fc13.$arch.rpm      (RPM)

Tuesday, June 21, 2011

Cycle 1.7.6, day #2 of week #9

Overnight, the publisher of my Git book notified that they found a misprint in the latest print run. Prepared material to update the affected readership.

Ram's update to "revert/cherry-pick" refactoring is getting into a reasonable shape, to be ready for the next cycle. I am reasonably happy with it.

Commented on 12 topics on the list.
Queued 14 patches from 2 people.

入門 Git (第4刷) の誤刷

拙著、入門 Git の310ページにプログラム例が二つばかりありますが、 第4刷には、印刷までの過程のミスで、真っ黒になって読めないものがあるそうです。もしもお買い上げの本にこの問題があれば、お手数でも、出版元のサービスセンター<service@shuwasystem.co.jp>まで御連絡下さいますよう、お願いします。











上の方のハコには、

DAVLockDB "/usr/local/apache2/temp/DAV.lock"

また、下の方のハコには、

<Location /project.git>
  DAV on
  AuthType Digest
  AuthName "Git"
  AuthUserFile /usr/local/apache2/conf/passwd.git
  Require valid-user
</Location>

と書いてあるのが正です。

(後日修正) 第一報では、「第三版・第四版」とお伝えしましたが、調査の結果、第三版については問題なく、第四版のみ問題があることが判明したそうです。なんでも四版の残りは回収して五版と交換となるらしいので、稀覯本として価値が出るかも知れません・・・なんてわけはないか ;-)。