From: Jordan DE GEA Date: Mon, 30 May 2016 08:46:40 GMT Subject: [RFC] Triangular Workflow UI improvement Message-ID: <521237FA-0DC4-4C47-AB44-778888A7726F@grenoble-inp.org> In-Reply-To: >> We are working on full implementation of triangular workflow feature. >> For now, the main options available are: >> - branch..pushRemote >> - remote.pushDefault >> And only setable by hands. > > And once it is set, you do not have to worry about it. I am not > sure per-branch thing is all that useful, unless you are always > working on a single branch like 'master', but the latter would be > just set once and forget about it. We got the example of our fork of git(e.g. GitHub). We want : - some branches that only fetch from git/git and push to our/git - the others branches fetch from and push to our/git. For now, we have to change branch..remote and branch..pushRemote(or remote.pushDefault). With branch..fetchRemote, we only have to set this one. fetchRemote is more explicit than remote for that case. Another point is that many commands can erase the old value of branch..remote. >> Context: >> - One main remote repository, e.g. git/git. >> - A remote fork (e.g. a GitHub fork) of git/git, e.g. me/git. >> - A local clone of me/git on the machine >> Purposes: >> - the local branch master has to fetch to git/git by default >> - the local branch master has to push to me/git by default > > Wouldn't remote.pushDefault be the single thing you need to set just > once and forget about it? Why would your users even want to do > these things … remote.pushDefault overrides branch..remote for all branches. The goal is to give an easily understandable config for complex configuration. Having all the configuration in the same part (e.g [branch « master »]) is easier to understand and edit. > >> c. add `git fetch --set-default` in order to set remote.fetchDefault >> d. add `git fetch --set-remote` in order to set branch..fetchRemote >> e. add `git pull --set-default` in order to set remote.fetchDefault >> f. add `git pull --set-remote` in order to set branch..fetchRemote >> a. add `git push --set-default` in order to set remote.pushDefault >> b. add `git push --set-remote` in order to set branch..pushRemote > > ... just to configure many variables every time they work on a new > branch? branch..pushRemote and all these options are optional. Options in commands may not be added. It just gives user friendly interaction with these options. To conclude: This feature is more about configuration clarity than possibility itself.