As it has been discussed before, our support for triangular workflows is
lacking, and the following patch series aims to improve that situation.
We have the concept of upstream branch (e.g. 'origin/master') which is to where
our topic branches eventually should be merged to, so it makes sense that
'git rebase' uses that as the destination, but most people would not push to
such upstream branch, they would push to a publish branch
(e.g. 'github/feature-a'). We could set our upstream to the place we push, and
'git push' would be able to use that as default, and 'git branch --vv' would
show how ahead/behind we are in comparisson to that branch, but then
'git rebase' (or 'git merge') would be using the wrong branch.
This patch series adds:
1) git push --set-publish
2) git branch --set-publish
3) git branch -vv # uses and shows the publish branch when configured
4) @{publish} and @{p} marks
5) branch.$name.{push,pushremote} configurations
After this, it becomes much easier to track branches in a triangular workflow.
The publish branch is used instead of the upstream branch for tracking
information in 'git branch --vv' and 'git status' if present, otherwise there
are no changes (upstream is used).
master e230c56 [origin/master, gh/master] Git 1.8.4
* fc/publish 0a105fd [master, gh/fc/publish: ahead 1] branch: display
publish branch
fc/branch/fast 177dcad [master, gh/fc/branch/fast] branch: reorganize
verbose options
fc/trivial f289b9a [master: ahead 7] branch: trivial style fix
fc/leaks d101af4 [master: ahead 2] read-cache: plug a possible leak
stable e230c56 Git 1.8.4
Changes since v1:
* Added @{publish} and @{p} marks
Felipe Contreras (9):
push: trivial reorganization
Add concept of 'publish' branch
branch: allow configuring the publish branch
t: branch add publish branch tests
push: add --set-publish option
branch: display publish branch
sha1_name: cleanup interpret_branch_name()
sha1_name: simplify track finding
sha1_name: add support for @{publish} marks
Documentation/git-branch.txt | 11 +++++++
Documentation/git-push.txt | 9 +++++-
Documentation/revisions.txt | 4 +++
branch.c | 43 +++++++++++++++++++++++++
branch.h | 2 ++
builtin/branch.c | 74 ++++++++++++++++++++++++++++++++++++++----
builtin/push.c | 52 +++++++++++++++++++-----------
remote.c | 34 ++++++++++++++++----
remote.h | 4 +++
sha1_name.c | 62 ++++++++++++++++++++++--------------
t/t1508-at-combinations.sh | 5 +++
t/t3200-branch.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++
t/t5529-push-publish.sh | 70 ++++++++++++++++++++++++++++++++++++++++
t/t6040-tracking-info.sh | 5 +--
transport.c | 28 ++++++++++------
transport.h | 1 +
16 files changed, 415 insertions(+), 65 deletions(-)
create mode 100755 t/t5529-push-publish.sh
--
1.9.1+fc1
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html