-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mecanism for excluding branches from the octopus #14
Comments
@benba @geofberard It's a bit dense, sorry for that. Tell me if there's anything not clear or missing. It's an opened discussion of course. |
Seems great to me , it's much more elaborated than what I had in mind :-) |
How do we deal with the config then ? It seems that we'll have to introduce a new config key like octopus.excludePattern |
@benba @apflieger I've a modification which does exactly that. With -e option and octopus.excludePattern config key. I'll try to clean up the code and make a PR. And @apflieger +1 for detecting automatically the branch to exclude |
Hi @ozangunalp, we haven't met yet! |
Update : the first part is in the master branch and will be part of the next release (1.4) |
Usecases :
git octopus
locally to test if it fixes the merge. The problem is that this local octopus will include the remote branch as well as the local one, which causes conflicts in most cases. The only workaround we have currently is to delete the remote branch locally withgit update-ref -d refs/remotes/origin/branch_name
before running the local octopus.In both cases, we just need to exclude a given branch from the merge. We need to consider both usecases for finding an elegant solution.
I came up with some ideas. First thing is that in both cases, we would expect the exclusion to be done everytime the command is run. So it should be declarable in configuration.
Proposal:
Allow a new syntax that negate branch pattern :
!branche-to-exclude
or even!branch-*
. This would work as both command argument and configuration entry.Allow
git octopus
to detect and exclude automatically the remote branch that correspond to the local branch you are on. This behavior itself should be configurable (conf key octopus.exclude) with the following values :none
(default): don't detect the remote branchcurrent
: exclude branches that have the same name that the current local branchupstream
: read the upstream configuration of the current local branch. I'm not sure if this value is needed but maybe just for consistency/transparency on how it works internally.pushDefault
: automatically choose betweennone
,current
andupstream
depending on the value of the push.default config (see git-config push.default section). This could be the default value on the next major release of git-octopus. Here's the mapping between push.default values and the resulting remote detection:nothing
:none
current
:current
upstream
:upstream
simple
:current
orupstream
. The latter is the safest because it will match the remote part of the ref which is not possible in thecurrent
mode. See bellow.matching
: I'm not sure, probablynone
We need to choose the behavior of the
current
value regarding remotes.git push
uses the notion of 'remote' whereasgit octopus
doesn't. This means that in thecurrent
mode, we are not able to determine the remote part of the ref (of the remote branch we are looking for) in the context of agit octopus
run. I don't think it is a big deal, let's just trip offrefs/heads/
of the current branch ref, grep it on the list of branches beeing merged and exclude the result.Note that 1. and 2. could be implemented seperately
The text was updated successfully, but these errors were encountered: