On Mon, Jun 15, 2015 at 10:01:15AM +1000, Dave Chinner wrote:
> On Fri, May 15, 2015 at 01:01:07PM -0500, Eric Sandeen wrote:
> > I'm terrible at bash, so don't laugh. But this more or less works for me
> > ...
> > This script takes either a patch name or a commit ID in the current
> > tree, and massages that change into a libxfs patch for the other tree;
> > i.e. it applies a kernel libxfs patch to xfsprogs, or vice versa.
> > It'll create a guilt patch if it looks like a guilt dir, or just smack
> > it in with "patch" if not.
> > It can surely be improved, but it's a start.
> > Example below, and script at the end. Requires filterdiff.
> > [root@bp-05 xfsprogs]# git log
> > commit 9681b791929795cd7dc6c7a79c3a69354f34e0b0
> > ...
> > [root@bp-05 xfsprogs]# libxfs-apply /mnt/test2/git/linux-xfs/
> > 9681b791929795cd7dc6c7a79c3a69354f34e0b0
> > Filtered patch for /mnt/test2/git/linux-xfs/ contains:
> > a/fs/xfs/libxfs/xfs_alloc.c
> > a/fs/xfs/libxfs/xfs_alloc_btree.c
> > a/fs/xfs/libxfs/xfs_attr_leaf.c
> > a/fs/xfs/libxfs/xfs_attr_remote.c
> > a/fs/xfs/libxfs/xfs_bmap_btree.c
> > a/fs/xfs/libxfs/xfs_btree.c
> > a/fs/xfs/libxfs/xfs_da_btree.c
> > a/fs/xfs/libxfs/xfs_dir2_block.c
> > a/fs/xfs/libxfs/xfs_dir2_data.c
> > a/fs/xfs/libxfs/xfs_dir2_leaf.c
> > a/fs/xfs/libxfs/xfs_dir2_node.c
> > a/fs/xfs/libxfs/xfs_dquot_buf.c
> > a/fs/xfs/libxfs/xfs_format.h
> > a/fs/xfs/libxfs/xfs_ialloc.c
> > a/fs/xfs/libxfs/xfs_ialloc_btree.c
> > a/fs/xfs/libxfs/xfs_inode_buf.c
> > a/fs/xfs/libxfs/xfs_sb.c
> > a/fs/xfs/libxfs/xfs_symlink_remote.c
> > /mnt/test2/git/linux-xfs/ looks like a guilt directory.
> > Top patch is: percpu-2
> > Create new Guilt patch? (Enter patch name or return to skip) new-uuid
> > Applying patch..new-uuid
> > Patch applied.
> > Patch was applied in /mnt/test2/git/linux-xfs/; check for rejects, guilt
> > push -f, etc
> > [root@bp-05 xfsprogs]#
> Eric, can you add a sign-off on this? I'll add it to the xfsprogs
> repo under a tools/ directory and write some docco for it. No point
> in having someone write a script like this and then ignoring it...
Ok, I'm also going to modify it. It currently needs to be run in the
source repository, rather than in the destination repository. It's
not obvious, because the CLI interface is:
"$prog <destination repo> <source repo commit id>"
I think it makes more sense to run from the destination repo, and
specify "source repo" "source repo commit id" as the paramters.
I'll also look to supporting a range of commit id's so that a series
can be pulled in with a single command....