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
Working master branch #3603
Working master branch #3603
Conversation
I don't think there is much point in doing that currently, the current plan was to turn 1.14. in a rolling-release-like model that allows new features, so what we want is a branch-of from latest 1.14 with non-compatability-breaking features from master (and i suggest that, at least for the main committers (me, vultral, jykive, celmin, mattsc, and you, hopefulyl i didnt forget someone), so most of their commits on theirr own becasue they usually know their commits best). Then once we have that, we can still think about doing a 1.15 release at some point, when we have something that is actually compatability breaking. Another disadvantage of your appraoch is that it is basicially impossibel to approve this because one cannot get an overview over this. doing stepsie from 1.14 also solve that. |
I know that was one option that was proposed by @Vultraz , but was that definitely chosen? So far it's mostly been waffling about even needing to do anything with the master branch at all, it seems like. |
Well it was proposed by other peole before him and all opinions i see on that thread (Me, vultraz, loonycyborg, celmin, Shiki) support that.
I don't have a strong opinion on what do do with the branch for 1.14 features, we could:
I woudl probably leave the master branch asis and just create the 1.14 featuresbranch, but in the end the only differnce between all these otions is how the branches are called so.. it doesn't change much for me. |
I explained in the OP how to review the branch. Compare each commit in the branch to the commit in current master that has the same log message. You'll find that the only changes are conflict resolution. Even if the branch were based on 1.14 it wouldn't be much easier to review, because there are several hundred commits that would need to be cherry-picked from master to such a branch. edit: Wording |
I was surprised to see this based of 1.13.12 but I can understand the logic. If we start from 1.13.12, it's easier to merge the changes since they can be taken in order. There should be fewer merge conflicts. That makes this process a lot faster. If we start from 1.14.5 we're eliminating the risk of regression. I don't have an opinion either way because, wherever you start from, you're going to have to audit the entire chain from 1.13.12 to the tip of both. |
@gfgtdf The project needs to have an open, playable branch where changes not suitable for the 1.14 branch can be made. That's true even if we allow more kinds of changes to be made in 1.14 patch releases. |
First, i wouldn't be so sure that commits that should be cherry picked are several hundred: commtis that have equivalences in 1.14. would ofc not be picked, and commits that are probably unsuitable (basicially most of the accelerated rendering) also would not be picked. In fact If you assume that the ar commits are basicially exactly vultraz commits (which is clearly not true but that one don't really make the following statistic much wrong, becasue there we are also removing his commits in the 1.14 count) the commitcounts excluding the ar commits are:
further assuming the every 1.14. commit has a master equivalent 'forwardport' and the gap in the non-ar commits bewetten master and 1.14 is the amount of commits that will be backported to 1.14 featurebranch (clearly this is wrong since for some reason there are more commits on 1.14 than on master, but think it's still good as an approximisation). This tell you that there will only a few commits to backport if you start from 1.14.5 afterall. This also matches my memeory which is that there were really just a vrey few features added to master that were unrelated to ar. Second, It's still easier than the current commit count which github shows as 1.5k. And third and most importantly, under the assumption that the newfeatures on 1.14 will come, the pr means doing the review twice, one time when porting all commit from currentmaster to newmaster and once when porting them from master to 1.14 . But when you wait until after the 1.14 newfeatures branch, doing the newmaster branch (which would then branch off from 1.14 newfeatures branch) is probably just a few commits.
Well yes, i agree that there are quite some things that cannot be done in 1.14 in particular raising the requirements like using c++14. or hardware acceleration (if it ever comes to 1.15). Still there is no hurry and also no reason why we need to overwrite master to if we could aswell use any other name in the meantime. |
Comparing current master to your gitlab fork, I've come across a couple additional commits that I think could be included, though none that absolutely need to be. I got a little lazy towards the end, but that's also when it's least likely that there will be something, I guess. These commits remove deprecated things and should definitely be cherry-picked eventually, but perhaps not quite yet; if we plan to push out master as a 1.14.x or a stable 1.15.0, then we probably should not cherry-pick these until we're ready for a 1.16.x. 80e0463 I'd also recommend some squashes for no other reason than they have commit messages that reference a no-longer-valid commit hash. Most of them are of the form "fixup ", but there are some others that reference hashes too. Or if you prefer you could reword the fixup to reference the new commit hash, but I figure that's not worth the extra effort. (This is why you should never reference commit hashes in your commit messages, people!) Finally, is there any reason to keep commit-revert pairs such as 4d0e5f6 and 2f98779? Apart from that the only other thing is that, obviously, you'd need to also grab the new master commits from the past few days. My view is that even if you don't apply the changes I've suggested here, we can go right ahead and make this PR the new master branch. I just pushed a duplicate of the old master as accelerated-rendering-attempt, as well as a tentative new gui2_help branch, though it'll need to be greatly cleaned up once it's rebased against this new master. (In particular, all the a_r commits will probably need to be separately dropped on that branch.) |
Also just for the record @gfgtdf - while I somewhat support the rolling release schedule on 1.14.x, I'd prefer to continue to increase the middle number for API-breaking changes even on a rolling release schedule; so under that model, 1.15.o would be a new stable release instead of a dev release. |
Another thing that was pointed out to me in the chat is that there was a big PR from singalen was merged to 1.14 but not to master, so that will need to be added here; though it can just as easily be done after this is pushed to master. |
celnup commits like this that obviously don't break things should also go into 1.14 (if they arent already) otherwise they will just give merging conflicts.
Yes that was my plan aswell, no breaking changes in 1.14 just new api. edit: well actual, my plan says nothing about how to handle breaking chanes exactly except that they won't come to 1.14 . so whether we name the next stable release 1.15, 1.16, 2.0 or 15.0 not sure. Whats important is though, that we should not make new stable series without a reason, that is: clearly noticable improvements for the user, in particular code clenups, removal of deprecated stuff etc. is irrelvant when it comes to when to make new releases. |
Yes, I already accounted for these factors. In
Of those 750 commits, about 450 are by Vultraz and about 300 by others.
There are 370 commits in 1.14 that don't have equivalents in master.
Your approximation is inaccurate: there are 292 commits in master that aren't by Vultraz and aren't in 1.14. The reason you got a much smaller figure is that the figure 292 is coincidentally almost equal to the number of commits in 1.14 not in master, 375. You counted only 375-292=83 commits.
Can I make something very clear? No one will need to review 1.5k commits. You can review the branch en masse by doing, for each commit X on the branch, |
Singalen's PR should be listed under
Fwdport
|
According to https://wiki.wesnoth.org/InterfaceActionsWML#.5Bdeprecated_message.5D those macros should have been retained at level 4. |
hmm yes i know my calculation werent that stong and since they werent the main point of my comment anyways i'll ignore this part.
Hmm there is also at least one patch (the theme battery thing) that is also not merged to master, and also not listed there becasue it was assumed not to be appliabel to master.
hmm, this would not tell me whether there is aynthing important missed though. i think i'll try to look at the diff from your branch to 1.14 instead, not sure whetehr thats realistic, will have to backport some code cleanup commits before i can really test that though. |
Well sure, if you want to backport them, go right ahead.
Huh? I don't understand what you're talking about here. The macros are marked level 3 or 2. The level 2 ones maybe should be retained for the time being, I suppose. Hmm there is also at least one patch (the theme battery thing) that is also not merged to master, and also not listed there becasue it was assumed not to be appliabel to master. Good point. If this becomes the new master, the battery branch will be applicable.
Maybe I'm missing something, but I don't understand how this is different from reviewing 1.5k commits. In any case, if you could somehow point directly at the commits that had conflicts whose resolution you're not confident in, perhaps that would make this easier? If possible giving both the old and new hash, or failing that, at least the commit message's first line. |
Do not push this yet. |
Your argument that we should wait for the rolling release model to be implemented is being discussed on the private thread.
Yes, of course, in addition to going through the diffs that are in you'd have to also go through what's been omitted, as celmin already has.
That commit removed macros that were deprecated at level 3. If i understand the wiki correctly they shouldn't have been removed altogether but kept as no-ops deprecated at level 4.
The difference is that you don't have to read 1500 diffs. You'd run a script on 1500 diffs and for 1400 of them it tells you that they're okay, and 90% of the remaining ones will have whitespace differences only. I explained the procedure because I wanted everyone to be able to review the branch without relying on info provided by me, but I suppose I could produce a list of commits that had conflicts, if it helps. |
previously the server would send [speak] commands that had no undo=no attributes so that the game would remove the speak command from the replay instead of the actual undoable action when undoing an action. (cherry-picked from commit 02bed5c)
for extra safety we add code to ensure undo=no for [speak] commands to the client aswell, this is not really needed as i just added a code that sets undo=yes to the server code, but it's an advantage to be able to safely connect to older servers aswell. (cherry-picked from commit c685031)
broken in commit 'preserve traslatable strings in simple_wml.' (cherry-picked from commit 7e0d63d)
regression from 'fix require_scenario & require_era' (cherry-picked from commit 9a3917d)
suggested by soliton (cherry-picked from commit bd16aee)
(cherry-picked from commit f03e3e8)
boost::ptr_vector has some nice features, but vector<unique_ptr> is still easier to use for most people basicially becasue people know it better. Also boost::ptr_vector does not support move ctors and also does not use std::unique_ptr, probably because it tries to stay compatible with c++03 so one has to use 'ptr_vector::auto_type' with it instead which has a different interface than std::unique_ptr (cherry-picked from commit 7e2dc29)
(cherry-picked from commit 1646a7b)
substr cannot throw bad_lexical_cast (cherry-picked from commit e90f0fc)
(cherry-picked from commit 9bb601e)
(cherry-picked from commit 8d6524c)
`[terrain_mask]` had multiple unexpected behviours, see for example wesnoth#3364 in parituclar `wesnoth.wml_actions.terrain_mask { x =2, y=2, mask="Ww"}` will change the tile at (1,2) instead of (2,2), so instead of reusing the old terrain mask code i wrote a new function that behaves as one would expect. `wesnoth.terrain_mask` does not have a `border=` parameter but a `is_odd` parameter that specifies that a map is in the odd format __ __ /00\__/20\__ \__/10\__/30\ /01\__/21\__/ \__/11\__/31\ /02\__/22\__/ \__/ \__/ instead of the even map format __ __ __/10\__/30\ /00\__/20\__/ \__/11\__/31\ /01\__/21\__/ \__/12\__/32\ \__/ \__/ (Monospaced font required to see ascii images.) The lua function also has a lua interfacte, meaning it does not take wml tables but normal lua tables making it easier to use from lua code. (cherry-picked from commit a3367ee)
Fixes empty name abilities in help in Liberty S1. (cherry-picked from commit c88a799)
(cherry-picked from commit c55b0c6)
…mage. (cherry-picked from commit ae4ef05)
(cherry-picked from commit 248af05)
Removes final black screen that could be mistaken for a bug. Shows Delfador disappearing in front of the orcs more clearly. [ci skip] (cherry-picked from commit 75ab69d)
(edit: see #3603 (comment) for how this list was produced) Here you go. Most of these are trivial differences such as whitespace; 3533 is an example of a non-trivial difference. conflicted: 0546b51 b746829 Improved console output on IPF fail |
Uh. You don't need to say that. It's kind of not possible to push unless the protection on the master branch is removed, right?
Ohhhh I see what you mean. That's a different interpretation of the deprecation system than I was envisioning, where level 4 is only used when you discover you have to remove something without going through a deprecation cycle. I'm not sure which is closer to what the original designer of the system had in mind, though. I'll try to look over your conflicts tomorrow. (Or rather, after getting some sleep.) |
ok i checkkpicked some of the cleanups commtis to 1.14 and from looking at the diff to your branch to 1.14 (https://gist.github.com/gfgtdf/acdf3cd4ed88088eb5854d8e73701f94 for the src/ only part (some nose removed) if someone is interrested) it looks good, some thigns were missed though but i assume most of there are marked somehere, some thign which i think might not have a report yet
edit: i only looked at /src though, in particular i didnt catch any wml/lua changes. |
The checkout-apply-diff procedure you mentioned doesn't seem to be working here (maybe you missed some detail?). I'm also not clear on whether X refers to the hash on this branch or the hash on the original master. |
Good catch.
That's a commit on the 1.14 branch. It's like the battery theme changes: it should be added to remaster, but it was never in master.
Sorry, I can't find this one. What's the commit hash?
Sorry. Here's a complete example. It builds on the "(cherry-picked from commit hash on master)" annotations I added yesterday.
Now, there's one more detail. The branch contains 4 original commits by me, which aren't backports of existing commits. Yesterday, when I added "cherry-picked from commit hash on master" annotations to all commits on the branch, I inadvertently added those annotations to those 4 commits too. To cut a long story short, those 4 commits are printed by the above loop, but I edited the output by hand to add the "new:" labels you saw above. |
i don't knmow the exact commit actually i just saw a nontrivial change in src/ai/default/recruitment.cpp and remembered that mattsc did such a thing. |
The difference in recruitment.cpp between remaster and master is: Diff
I assume what you're seeing is some commit to master that hasn't been backported to 1.14, or some commit to 1.14 that hasn't been fwdported to master. |
Any update on this? There really does need to be a working master branch again. |
If i understood @jostephd correctly his plan is how to wait until things are decided/this pr is 'merged' before doing the final fixup/forardsports. I personally stiill think it'd be easiert to branch off from current 1.14 branch, but i'm currently not really against this apporach either. Is there anythign in partiuclar you want to do on master? |
There's nothing particularly critical I want to do myself or anything like that, but there hasn't been a working master branch for way too long already, and I don't want this to end up forgotten because @Vultraz isn't pushing to get a working master branch like he should be. |
I'm waiting to hear if there's consensus that this branch should become the new 1.15 branch. To me, the goal of this PR is to produce a branch that's as close as possible to the current master branch, minus the portions that make master unplayable. (Those portions are not thrown away; they are preserved on the a-r-a branch and can be resurrected from there in the future.) That means I do not consider forwardports in scope for this PR. If this branch becomes the new 1.15 branch, then we should do forwardports from 1.14 to this branch before creating a release from this branch. Please do not expect me to do all the forwardports by myself; I have done way more than my fair share already.
Sure, if someone comes up with a branch that's the 1.14 branch plus interesting stuff from master backported, I would be happy to close this PR and let their branch become the new 1.15 branch. The end result will be the same, after all. Gregory touched on the pros and cons in his comment. |
Agreed. It's perfectly acceptable to get others to handle the forward ports. I haven't been able to find the time or motivation to properly review the conflicting commits that you've listed. I'll still try to find it, but if anyone can review them and conclude that there's no merge errors, I would consider that sufficient for considering this branch usable. |
This can be pushed to a new branch (not force-pushed to master) if it's ready. Call it |
This has been done. Thanks @Vultraz. For posterity let me document again the review procedure: go through the list commits that differ between Next up is to think about fwdports from 1.14 to development. |
…master This is simply to document the current state. If someone wants to forward that revision, go right ahead, and I'll then revert this changelog commit. See #3603
As we all know,
master
is unplayable (#3538).This PR is a replacement master branch, built by cherry-picking a subset of all commits in current master onto the 1.13.12 tag, which is the point where 1.14 forked from master.
I may have excluded too many or too few commits. If such mistakes have happened please send corrections (and don't bite my head off, it was a huge chunk of work and it's inevitable that mistakes will have been made).
There were quite a few conflicts in the rebase. It is not unlikely that in resolving those conflicts I introduced some bugs. From memory, there were non-trivial conflicts in unique_ptr/shared_ptr changes (particularly in ai/actions.cpp), boost::thread/std::thread changes, boost filesystem / std::filesystem changes. The lua vulnerability fix conflicted too.
The best way to review this branch is by diffing the commits in this branch to the corresponding commits in master.
The project files for VS/XCode/CBP may need to be updated to account for files that have been added/deleted/renamed on master.
This branch should be force-pushed as a new
master
branch, not merged. Currentmaster
should be copied to another name beforehand. Afterwards, any bugs that were fixed on master but are not fixed on this branch should be reopened. Then we should release a 1.15.0 development version from this branch.edit:
List of commits that differ between
master
and this branch