This patch series adds two features that are a step toward providing consistent per-remote configuration of push behavior in addition to merge (tracking) behavior. In particular, the two features are: 1) per-remote configuration of automatic tracking setup. This leads to some nice refactoring of the code handling autosetup, where the combination of autosetupmerge and autosetuprebase is consolidated in a struct. 2) The ability to automatically setup push refspecs corresponding to local branches tracking a remote. This is false by default, since we also have push.default---and actually, a generalized default of true is probably not a good idea, unlike a per-remote setting. In the future, 'git remote add' might set the per-remote autosetuppush to true if it gets some appropriate command-line argument. Patch 1 is a somewhat tangential DWIM that I've meant to send for a while. It conflicts with this patch series, so I've included it. Patches 2 and 3 include the refactorings in preparation for the new remote.*.autosetup configuration, which is then implemented by patch 4. Patch 5 extracts some code to a function that will become more complicated in patch 6. Patch 6 implements autosetuppush by automatically creating and deleting push refspecs upon branch creation and deletion. config: allow false and true values for branch.autosetuprebase branch: install_branch_config and struct tracking refactoring introduce a struct tracking_config remote: add per-remote autosetupmerge and autosetuprebase configuration move deletion of merge configuration to branch.c branch, checkout: introduce autosetuppush Documentation/config.txt | 36 +++++++++++++++++- branch.c | 92 +++++++++++++++++++++++++++++++++++++-------- branch.h | 5 ++- builtin-branch.c | 10 +---- builtin-checkout.c | 2 +- builtin-clone.c | 4 +- cache.h | 11 ++++- config.c | 48 +++++++++++++++++------- environment.c | 7 ++- remote.c | 3 + remote.h | 1 + t/t3200-branch.sh | 92 ++++++++++++++++++++++++++++++++++++++++++++- 12 files changed, 259 insertions(+), 52 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html