Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [PATCH 3/3] CONFIG_PROTECT: protect symlinks, bug #485598
Date: Mon, 27 Oct 2014 09:07:31
Message-Id: 544E0B4B.4000306@gentoo.org
In Reply to: Re: [gentoo-portage-dev] [PATCH 3/3] CONFIG_PROTECT: protect symlinks, bug #485598 by Alexander Berntsen
1 On 10/27/2014 01:08 AM, Alexander Berntsen wrote:
2 > I'm not sure how anyone is seriously supposed to do an in-depth review
3 > of 500+ changes. For what it's worth, what I could stomach reading of
4 > the vartree changes, looked relatively sane. The commit messages also
5 > seem to indicate you're doing something sane.
6 >
7 > Is there no way of splitting these things into smaller commits that
8 > make sense?
9
10 I think the current split into 3 patches is as small as we should go
11 here. We've got 3 logical parts, and it makes sense to look at all the
12 changes together for each of those parts.
13
14 > As they are right now, it's almost pointless to even look
15 > at the diff. One would have to look at the old and new source in their
16 > entireties next to each other to get the bigger picture. (I might find
17 > time for this later this week.)
18
19 The dispatch-conf and etc-update changes should be easier to review
20 without needing more context than what's in the patches. All of the
21 changes there simply to take code that only supported regular files and
22 fix it to handle symlinks differently from regular files.
23
24 The bigger picture is harder to see in the vartree patch, since
25 dblink.mergeme is such a large method. So, it may help if I give some
26 more overview in the commit message. The changes to dblink.mergeme do 3
27 things:
28
29 1) Move the bulk of config protection logic from dblink.mergeme to a new
30 dblink._protect method. The new method only returns 3 variables, which
31 makes it easier to understand how config protection interacts with the
32 dblink.mergeme code that uses those variables. This is important, since
33 dblink.mergeme has so many variables.
34
35 2) Initialize more variables at the beginning of dblink.mergeme, since
36 those variables are used by the dblink._protect method.
37
38 3) Use the variables returned from dblink._protect to trigger
39 appropriate behavior later in dblink.mergeme.
40
41 The new_protect_filename changes are required since this function
42 compares the new file to old ._cfg* files that may already exist, in
43 order to avoid creating duplicate .cfg* files. In these comparisons, it
44 needs to handle symlinks differently from regular files.
45 --
46 Thanks,
47 Zac