[Nexus 6  Original Android Development] bbedward:
In lieu of the BFS pulls that are happening, I thought I would make clarifications about how I handle my git tree.

To add something like BFS to your tree you should only have to do something like "git pull zen BFS" and that's it, you are done. You can always revert the merge with "git revert -m 1 <commit_id>"

I added this to the OP as well.

Using GIT Differently

You don't need permission to fork, build, modify zen. Nor do you need permission to bundle it in your rom.

BUT, there has been some confusion in the way I handle my git tree I thought I would help explain here.

I handle all of my kernel-related GIT affairs very differently from anybody else you've seen, probably:

Everything is based off of stock msm/android-msm-shamu-3.10-lollipop-mr1 (Or newer revs as they come available)

When there is a major revision update to the base (android-msm-shamu-3.10-lollipop-mr2 or something), I will avoid rebasing the branch and create a new branch each (so there will be a BFS and a BFS_mr2 or something)

Every change from the stock kernel lives on it's own,independent branch. There's BFS, kcal, fsync, f2fs/ext4_upstream, kexec-hardboot, usb_fastcharge, etc, etc.)

I merge all these independent branches into the master branch, which is how I come up with the "Zen-Kernel" that includes all of them (git merge BFS; git merge kcal; git merge wake_gestures_ex, etc, etc.)

This means forking zen is not traditional, but it's a good thing!

What do I do if I want to pull something from Zen kernel into my tree?:

Add the ZenKernel_Shamu remote to your local tree (git remote add zen https://github.com/bbedward/ZenKernel_Shamu.git)

Fetch the newest zen changes (git fetch zen)

Pull the change you want, for example to pull BFS into your local tree: git pull zen BFS

Whenever you want to pull an update, git fetch zen; git pull zen BFS

These branches are all based on the STOCK msm/android-msm-shamu tree. So if you pull in BFS or kcal you will not get anything new except BFS or kcal. No other unwanted things will be pulled. Some branches depend on each other (ext4_upstream depends on mm_upstream for example), so if you pull in ext4_upstream you will also get the contents of mm_upstream, and so forth.

What do I do if I want to fork the entire zen kernel exactly as it is?

Well you can do it the old way as you always have. But I change some other stuff for internal purposes you may want to change (in the zen branch), such as the ZEN_INFO_SYSFS_INTERFACE is probably irrelevant to you and ZEN_INFO_VERSION_CODE only represents an integer value with the extra version "-zen" statically defined in the Makefile. You may want to change these things or revert them and just append something in the CONFIG_LOCALVERSION such as "-MyKernel_5.1" or something.

This gives me infinite flexibility when it comes to reverting things, rebasing, etc. But it's also designed to make pulling any specific changes incredibly seamless.

For example, if I want to a stock kernel with wake gestures, kcal, and BFS it would just be like this:

# git clone https://android.googlesource.com/kernel/msm
# git checkout -b master-new msm/android-msm-shamu-3.10-lollipop-mr1
# git branch -D master; git branch -M master-new master
<At this point you are sitting on the stock 5.1 tree, on the master branch>
# git remote add zen [url]https://github.com/bbedward/ZenKernel_Shamu.git[/url]
# git fetch zen
# git pull zen BFS
# git pull zen wake_gestures_ex
# git pull zen kcal
<At this point you are sitting on stock 5.1 tree + BFS + Kcal + Wake Gestures, ready to build>