Re: linux-next: unnecessary merge in the v4l-dvb tree
From: Mauro Carvalho Chehab <hidden>
Date: 2018-02-13 00:22:13
Also in:
linux-next, lkml
Em Mon, 12 Feb 2018 15:42:44 -0800 Junio C Hamano [off-list ref] escreveu:
Linus Torvalds [off-list ref] writes:quoted
And some maintainers end up using multiple repositories as branches (the old _original_ git model). Again, you can just use "git fetch + git reset", of course, but that's a bit unsafe. In contrast, doing "git pull --ff-only" is a safe convenient operation that does both the fetch and the update to whatever state. But you do need that "--ff-only" to avoid the merge.OK. I guess it is legit (and semi-sensible) for downstream contributors to "git pull --ff-only $upstream $release_tag_X" to bring their long-running topic currently based on release X-1 up to date with respect to release X. It probably makes more sense than rebasing on top of release X, even though it makes a lot less sense than merging their topics into release X. As you said, pull of a tag that forbids fast-forward by default is rather old development (I am kind of surprised that it was so old, in v1.7.9), so it may be a bit difficult to transition. There is [pull] ff = only but pull.ff is quite global, and not good for intermediate level maintainers who pull to integrate work of their downstream (for which they do want the current "do not ff, record the tag in a merge commit" behaviour) and also pull to catch up from their upstream (which they want "ff-when-able"). They need to control between ff=only and ff=when-able, depending on whom they are pulling from.
Yes, that's my pain. I don't want ff only when pulling from others, only when pulling from upstream tree.
We may want per-remote equivalent for it, i.e. e.g. [pull] ff=false ;# good default for collecting contributions [remote "torvalds"] pullFF = only ;# good default for catching up or something like that, perhaps?
Yeah, something like that works. Please notice, however, that what I usually do is: $ git remote update torvalds $ git merge <tag> (or git pull . <tag>) So, for the above to work, it should store somehow the remote from where a tag came from. The reason is that I keep locally a cache with several tree clones (in bare mode) s that I bother enough to cache (linus, -stable, -next), as pulling from BR is time consuming, and I want to do it only once and use the same "cache" for all my git clones. I have a few git workdirs for my upstream work, but, as a patch developer, I also have "independent"[1] git repositories. [1] Due to disk constraints, the clones actually use --shared. So, the common objects are actually stored inside a single tree. Thanks, Mauro