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
TODO Eliminate busywork from hotfix process #25
Comments
After writing that I've since become very skeptical of running any git operations like this for the user. I think a better solution if we do anything with this would be to allow rollouts where you don't have to pull/push at all, but that has other caveats. |
On 29 December 2012 14:20, Ævar Arnfjörð Bjarmason <notifications@github.com
In this case however I think there is a "clean" work around: add a new Im thinking something like: git-deploy push-hotfix which would then do the magic. Basically automagical behavior without the
I would like to hear your thoughts on this. Yves perl -Mre=debug -e "/just|another|perl|hacker/" |
I had a chat with Hans on Friday about wanting to get rid of the whole What I'd like to change about the git-deploy behavior are a few things
The point of doing this is that Hans wants to change the staging Currently if you switched from the main staging server to the fallback Thus if you did an "abort" after starting the sync we'd rollback to If we always view the tags we get from the upstream repo as the And by jumping around with "git reset --hard" like this we don't do a We can still help people not to shoot themselves in the foot by We could skip this if the commit looks cherry-picked, i.e. just get What do you think? |
See Issue #25 - TODO Eliminate busywork from hotfix process. This is an untested initial attempt at a recipe for this process. It is interesting as we dont have an easy way currently to the lock a directory without modifying the logfile. We solve this by holding a lock on the logfile for the duration of the action. IOW, this includes code to support a "logless lock". (Quite simple logic actually).
On 6 January 2013 14:37, Ævar Arnfjörð Bjarmason
As you know I am really against this. IMO this is the only thing that guarantees that everyone can see Also, I have prior experience that not insisting on this results in
Well, I am pretty happy with the recipe being (partially implemented
And or (not implemented yet, basically alias sync-hotfix to "push-hotfix sync")
Here I agree.
Here I dont. At least not without some prompting to the user. As far A. The current commit is tagged for this role and the lastest B. The current commit is tagged for this role but is behind C. The current commit is untagged for this role, and has never been D. The current commit is untagged, but has been tagged for this role All but D are easy to handle IMO, and more or less fit your plan. Note that D used to be relatively common, these days AFAIK it is not,
Well, if this is for a fallback server, shouldn't there just be a Anyway, IMO what I propose above should cover this. As long as it
Yep, I see the problem.
Like I said, so long as we do something intelligent for case D IMO we Also note that your plan does not cover case C, where there are no
C'mon Avar you know that isn't the only reason. There are many reasons. IMO the solution of providing some special commands for this case is
As you know my opinion is that anything that has been rolled out So far I think adding a new action to automate some of the busywork is cheers, perl -Mre=debug -e "/just|another|perl|hacker/" |
I just don't see anything wrong with rolling out a commit that's not on the main branch you always roll out if that commit is a hotfix, in fact I think it makes more sense to do that than to push a commit that duplicates something you just cherry-picked to the branch you cherry-picked it from. In some cases you do want to pull/push/reset like we do now, but I think the tool shouldn't be enforcing it. For showing all commits that have ever been rolled out on a given role
Shows you all commits that have ever been rolled out, including those that aren't on whatever branch you normally roll out from. There's also all sorts of hairy edge cases with providing a wrapper that pushes the hotfix for you, since you can't lock the remote repository you're pulling/pushing from someone could push a commit after you do your initial "pull", so you'll have to "pull" again, I've had this happen to me. Resolving these kind of things automatically is really tricky, and if you don't resolve them automatically you're going to leave the user really confused at the state you've left them in. I think git-deploy should treat hotfixes exactly like you'd treat making a point-release on a branch you've branched off for a maintenance release. When we cherry-pick something for say the 5.10 branch from blead we don't go and pull/push that back to blead. That would just be absurd. |
On 6 January 2013 18:59, Ævar Arnfjörð Bjarmason
As far as I can tell the seed of this problem is that we are using git to As far as I am concerned if I do something like: git log --decorate I expect to see every tag that is reported is with git-tag. I should not
Yves perl -Mre=debug -e "/just|another|perl|hacker/" |
On 6 January 2013 19:21, demerphq demerphq@gmail.com wrote:
For what its worth I always wanted a proper solution for this. For That way you would be able to view the rollout history distinct from Then we also would have no need to ensure that every rolled out commit Yves perl -Mre=debug -e "/just|another|perl|hacker/" |
See Issue #25 - TODO Eliminate busywork from hotfix process. This is an untested initial attempt at a recipe for this process. It is interesting as we dont have an easy way currently to the lock a directory without modifying the logfile. We solve this by holding a lock on the logfile for the duration of the action. IOW, this includes code to support a "logless lock". (Quite simple logic actually).
Currently the hotfix logic has a large manual process associated to it which is required to be done before a sync from the docs:
Note the last line of the docs.
The text was updated successfully, but these errors were encountered: