News for hackers. Stuff that matters.
Re:Wine Staging by 0x0 on Tuesday September 15, 2015 @07:53PM (#10223861)
Tracking fixes as .patch files in a git repository is.... an interesting way to go about things.
Re:Wine Staging by roblabla on Tuesday September 15, 2015 @08:13PM (#10223920)
Not the first or only project to do this. Spigot, a fork of the CraftBukkit minecraft server, uses a similar approach [0]. It allows to easily collaborate with the upstream project (Just apply the feature's patch on current master).

[0] : https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/...

Re:Wine Staging by asiekierka on Wednesday September 16, 2015 @12:41AM (#10224720)
Spigot does this for another reason: thanks to someone making the arguably stupid choice of using GPLv3 for a project linking to (propiertary) Minecraft source code, CraftBukkit has been DMCA'd by one of the lead developers over Mojang taking over the project when the lead dev team quit and is now essentially illegal to redistribute.
Re:Wine Staging by belorn on Wednesday September 16, 2015 @05:30AM (#10225522)
Was it ever legal to redistribute the proprietary Minecraft source code?
Re:Wine Staging by 0x0 on Tuesday September 15, 2015 @08:19PM (#10223942)
Wouldn't it be better to just keep the changes in a branch in a fork off of the upstream master branch? I would think that git would do a better job at re-applying to newer releases (i.e. merging from upstream master) than what patch(1) can do?
Re:Wine Staging by btown on Tuesday September 15, 2015 @09:33PM (#10224192)
This makes me think that automatic rebasing and test running as a service would be an interesting product. Continuous integration of upstream changes into your possibly proprietary downstream fork (for features or ports), with Travis running each time.... You could avoid the problem of divergent forks!
Re:Wine Staging by viraptor on Tuesday September 15, 2015 @11:47PM (#10224559)
This is possibly the hardest version control problem I ever ran into. Especially in projects which have a large number of changes upstream (100+ commits daily), I've only seen bad and worse solutions.

The bad one is trying to follow upstream on each commit, notifying you every time some patch either doesn't work or doesn't merge anymore so you have to fix it manually. This still doesn't stop the cases where the patch in itself works, but doesn't make sense in the project anymore (some code moved around, tests still pass, but the functionality is not reachable). You also need a fair bit of architecture to test each of your patches with on each upstream change.

The worse solution is taking a few days off every time a bigger release is out and porting all patches. It saves on the continuous testing infrastructure, but takes unknown amount of time and you may discover some functionality simply cannot be migrated anymore. You're also likely to introduce many more bugs with rushed development.

I've been through planning something like this on a number of projects before. It's a lot of effort and it should be avoided as much as possible.

I think the product you describe could be actually a really good idea, but a lot of it would have to deal with as clever annotations as possible - what broke, when did it work the last time, who's responsible for porting, what functionality does it provide, is it critical/optional, etc.

Re:Wine Staging by voltagex_ on Tuesday September 15, 2015 @10:20PM (#10224324)
I think you could probably make Travis do this itself - the script would be a bit gnarly though.
Re:Wine Staging by kazinator on Wednesday September 16, 2015 @12:20AM (#10224661)
That would require someone to read a man page or two. Which they clearly don't need to do because, nearly self-evident proof: they memorized the gnu diff and patch ones twenty years ago, QED.
Re:Wine Staging by daurnimator on Wednesday September 16, 2015 @03:49AM (#10225212)
Interestingly enough, the mercurial 'mq' extension has full support for it: https://mercurial.selenic.com/wiki/MqExtension#Publishing_pa...

It's also a pretty common thing in package manager managers.

Re:Wine Staging by tomjakubowski on Wednesday September 16, 2015 @05:17AM (#10225490)
Is that a typo, or are there truly such things that manage package managers?
Re:Wine Staging by daurnimator on Wednesday September 16, 2015 @09:22PM (#10231038)
It was not a typo. I was referring to the systems used by various linux distributions to manage how they build packages.

e.g. (sorry, I picked an example of openntpd, which only has 1 or 2 patches; other packages have many more!)

  - debian: https://anonscm.debian.org/cgit/collab-maint/openntpd.git/tree/debian/patches
  - arch: https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/openntpd
Re:Wine Staging by Ded7xSEoPKYNsDd on Wednesday September 16, 2015 @08:59AM (#10226186)
Android uses the repo tool to manage the many git repos where the actual code resides.

https://source.android.com/source/using-repo.html

Not sure if that's what gp meant.

Re:Wine Staging by harperlee on Wednesday September 16, 2015 @05:23AM (#10225506)
Perhaps, if we count people that product-manage among those things.