
Wolfgang Denk wrote:
Dear Rafal,
in message 477BD21F.7040205@semihalf.com you wrote:
If your work depends on patches from another repo, please ask the custodian of this other repo to send a pull request, and ask him to mention in his pull request that this is urgent becasue ... depends on it.
I guess I'm still a bit confused about the process. So in case of inter-repo dependencies, would you like something like the following?
I'm still trying to figure out myself how we could come up with a compromize of having clean and orthogonal custodian's repositories on one side and a practical solution that is usable without introducing unnecessary delays on the other side.
Thanks for your patience with me.
As I see it, when we have this situation and need a fast stream into u-boot, we need to (and can) use branches effectively. Using the late lamented situation where 85xx was dependent on fdt changes, ideally Andy and I do some coordinating.
1) I would put *just the patches that Andy needs* into my "master" branch, putting less urgent patches into a side branch (e.g. "testing").
2) Andy can then pull my "master" branch into his repository and add his Value Added[tm] patches on top of the minimum necessary u-boot-fdt patches. [1]
3) Andy and I clamor for Wolfgang to pull u-boot-fdt and then u-boot-85xx.
4-good) If Wolfgang approves of u-boot-fdt, half is well. If Wolfgang approves u-boot-85xx, all is well.
4-bad) In a worst case scenario, Wolfgang requires changes to the u-boot-fdt patches. I (or the responsible party) would reroll the u-boot-fdt patches and generate a new "master" branch with acceptable patches. Andy would have to save his Value Added[tm] patches, do a "git reset --hard" back to the original ToT, re-pull my u-boot-fdt "master" branch, and then re-apply his Value Added[tm] patches (fixing breakages as needed). Goto step 3).
This should be quite reasonable in practice, although it will take some coordination. Even after the fact, we (me in the fdt/85xx example) can use git-rebase or (git reset --hard + re-apply patches) to put only the critical patches in "master" and move the non-critical patches to a side branch, e.g. "testing".
In the specific instance of u-boot-fdt + u-boot-85xx, we ended up in state 4-good) by luck, laziness, some flexibility from Wolfgang. The luck part was the fact that, due to laziness on my part, all or nearly all of the changes in the u-boot-fdt tree were the critical set needed by Andy. Wolfgang was flexible enough to pull my "testing" branch (rather than "master"), then Andy's 85xx patches, approve of both, and life was good.
HTH, gvb
[1] If Andy were paranoid, he would... a) Pull my "master" branch into a new branch in his repository, say "ubootfdt" b) Create a new branch based on "ubootfdt", say "testing" c) Apply his Value Added[tm] patches to "testing". Once he is happy with the result in c), he would pull the "testing" changes into his "master" branch and continue on to step 3)
I don't see any major advantage of this, but it would be helpful for keeping the patches straight if branches needed to be discarded and recreated due to state 4-bad).