Vim: arpeggio 0.0.6

2010-04-20T12:39:43+09:00 / vim, release / comment

arpeggio 0.0.6 has been released.

This version includes minor improvements, especially a bugfix for the behavior of :Arpeggio commands which accidentally treated " as a comment. See also release notes of arpeggio 0.0.6 for the details.

Vim: textobj-user 0.3.9

2010-04-19T22:20:48+09:00 / vim, release / comment

textobj-user 0.3.9 has been released.

This version includes a bugfix in Select mode. Now it works smoothly with plugins which utilize Select mode. See also release notes of textobj-user 0.3.9 for the details.

Mastering git filter-branch: Points to extract a subproject

2010-04-03T01:24:32+09:00 / git / comment

Git is very powerful; it lets users to manipulate stuffs which are usually abstracted by high-level user interface. So it's possible to extract subprojects in a git repository by git filter-branch. But there are several pitfalls to achieve this purpose. The following is what you should know to extract subprojects in a git repository:

Use --index-filter instead of --tree-filter if it's possible.
Generally, --index-filter is faster than --tree-filter. Because --tree-filter involves working tree while --index-filter deosn't have such overheads. And the overhead easily becomes a big burden even if a project is not so large one (for example, 300 files and 2300 commits).
Use --prune-empty and rebase to level the history.
Some kind of filters generate empty commits. Such commits can be removed from the history by --prune-empty. But --prune-empty keeps merge commits even if the merge commits introduce no change. You can use git rebase {the-root-commit-id} to remove such commits and to level the history as linear one.
Remove unnecessaries first, then rename the rest.
It's necessary to do removing unnecessaries and renaming the rest to extract a subproject. But it's hard to do both of them at once, so use filter-branch twice; remove unnecessaries first, then rename file/directory structure.
Use a whitelist to remove unnecessaries.
The history of a project usually contains renaming of files, so it's hard to remove unnecessaries with a blacklist.
Check whether files to keep were renamed before.
The history of a project usually contains renaming of files, so you have to include the old filenames to keep into a whitelist, as well as the current filenames. To list all names which a file was called ever, use the following command: git log --pretty=oneline --follow --name-only {file} | grep -v ' ' | sort -u

Dedicated repositories for my Vim plugins

2010-04-02T22:51:29+09:00 / vim / comment

As many requested, finally, I split my config repository (which contains many Vim plugins) and I created a dedicated repository for each Vim plugin. For example, vim-arpeggio, vim-fakeclip, vim-textobj-user and so forth. Please enjoy.

Vim: fakeclip 0.2.7

2010-04-02T22:43:49+09:00 / vim, release / comment

Vim plugin fakeclip 0.2.7 has been released. This version allows to read/write the paste buffer of GNU screen from everywhere even if Vim is not running in a session of GNU screen. (It's not possible to do so with old versions.)