On Tue, Jun 2, 2020 at 3:16 PM Craig Russell <apache....@gmail.com> wrote: > > > On Jun 2, 2020, at 11:27 AM, sebb <seb...@gmail.com> wrote: > > > > On Tue, 2 Jun 2020 at 19:01, Craig Russell <apache....@gmail.com > > <mailto:apache....@gmail.com>> wrote: > >> > >> > >> > >>> On Jun 2, 2020, at 9:06 AM, Sam Ruby <ru...@intertwingly.net > >>> <mailto:ru...@intertwingly.net>> wrote: > >>> > >>> On Tue, Jun 2, 2020 at 10:49 AM Craig Russell <apache....@gmail.com > >>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com > >>> <mailto:apache....@gmail.com>>> wrote: > >>>> > >>>>> On Jun 2, 2020, at 6:35 AM, Sam Ruby <ru...@intertwingly.net > >>>>> <mailto:ru...@intertwingly.net> <mailto:ru...@intertwingly.net > >>>>> <mailto:ru...@intertwingly.net>>> wrote: > >>>>> > >>>>> On Mon, Jun 1, 2020 at 8:50 PM Craig Russell <apache....@gmail.com > >>>>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com > >>>>> <mailto:apache....@gmail.com>> <mailto:apache....@gmail.com > >>>>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com > >>>>> <mailto:apache....@gmail.com>>>> wrote: > >>>>>> > >>>>>>> On Jun 1, 2020, at 4:58 PM, sebb <seb...@gmail.com > >>>>>>> <mailto:seb...@gmail.com>> wrote: > >>>>>>> > >>>>>>> On Mon, 1 Jun 2020 at 23:20, Craig Russell <apache....@gmail.com > >>>>>>> <mailto:apache....@gmail.com>> wrote: > >>>>>>>> > >>>>>>>>> On Jun 1, 2020, at 2:42 PM, sebb <seb...@gmail.com > >>>>>>>>> <mailto:seb...@gmail.com>> wrote: > >>>>>>>>> > >>>>>>>>> On Mon, 1 Jun 2020 at 22:30, Craig Russell <apache....@gmail.com > >>>>>>>>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com > >>>>>>>>> <mailto:apache....@gmail.com>>> wrote: > >>>>>>>>>> > >>>>>>>>>> OK. > >>>>>>>>>> > >>>>>>>>>> How about this proposal: > >>>>>>>>>> > >>>>>>>>>> New directory documents/Emeritus with these directories: > >>>>>>>>>> emeritus for accepted requests > >>>>>>>>>> emeritus-requests-received for received requests > >>>>>>>>>> emeritus-requests-rescinded for rescinded requests > >>>>>>>>>> emeritus-reinstated for original requests from reinstated Members > >>>>>>>>> > >>>>>>>>> This will mean changes to Whimsy code, and could result in temporary > >>>>>>>>> breakage as well as needing extra testing. > >>>>>>>> > >>>>>>>> The only Whimsy code that needs to change is secretary workbench > >>>>>>>> which currently stores requests in > >>>>>>>> documents/emeritus-requests-received. All other code is the stuff > >>>>>>>> I'm working on. > >>>>>>> > >>>>>>> Changes to the locations of emeritus directories means changes to > >>>>>>> whimsy library code as well. > >>>>>>> The committer roster relies on this for showing emeritus member docs. > >>>>>>> And there are scripts to check emeritus files. > >>>>>>> > >>>>>>> Introduction of an extra Emeritus parent is going to mean changes to > >>>>>>> shared code, so lots of testing needed. > >>>>>> > >>>>>> Ok. I really don't care if we add two more directories if it means > >>>>>> less work for everyone else. > >>>>>> > >>>>>> Anyone else with a strong opinion here? Sam? > >>>>> > >>>>> I, too, feel that the current structure is haphazard and disorderly, > >>>>> and that the proposal would be an improvement. Minor quibble: the > >>>>> redundancy of Emeritus/emeritus-* bothers me. > >>>> > >>>> I'm open to other ideas that avoid duplication of names. > >>>>> > >>>>> That being said, my bigger concern is twofold: > >>>> > >>>> This is in line with what Sebb has been saying, if I can read between > >>>> the lines. > >>>>> > >>>>> 1) Effectively, the only documentation for the current structure is > >>>>> contained within the whimsy code. Effectively, instead of the > >>>>> secretary saying "this is where the data belongs", we make decisions > >>>>> based on where a given tool places data and where other tools look for > >>>>> data. There is no architecture. Ultimately, this is a failure of the > >>>>> secretary. I say that as a former-secretary who both inherited this > >>>>> mess and mostly left it to my successors. > >>>> > >>>> Well, way back in 2018 while I was secretary we started using the > >>>> emeritus-requests-received directory with no real tool support. We did > >>>> not architect this but just decided it was better than leaving the > >>>> request in the workbench queue for later processing. > >>>>> > >>>>> 2) The code is unnecessarily tightly bound to the location of the > >>>>> data, making changes more difficult. Once upon a time, code would > >>>>> call ASF:SVN['foobar'] or perhaps ASF::SVN.find('foobar') to locate > >>>>> directories, and that library routine would consult things like > >>>>> ~/.whimsy.for local tailoring. Over time, there seemed to be little > >>>>> interest in maintaining that mapping, and the current state is that if > >>>>> you place things in any location other than /srv, things may not work. > >>>> > >>>> The current tooling does have a mixture of styles. This is from > >>>> memstat-json.rb: > >>>> # identify file to be updated > >>>> members_txt = File.join(ASF::SVN['foundation'], 'members.txt') > >>>> > >>>> So this says that somewhere there is a foundation directory that > >>>> "someone else" knows the actual location. But it does hard code the name > >>>> of the file, members.txt. > >>>> > >>>> Is that ideal from your perspective? Or should the name of the > >>>> members.txt as well as its location be abstracted to the ASF::SVN > >>>> metadata? > >>>>> > >>>>> Ideally, there would be a token or identifier for each of these > >>>>> directories, an ASF:SVN or some other place would be the only place > >>>>> that knows the mapping of this identifier to the URL as well as the > >>>>> location of where the local working copy associated with that URL > >>>>> would be. I'd love to be in a position where the location and even > >>>>> the format of the files could be changed at will, and any impact to > >>>>> whimsy tooling would be contained. > >>>> > >>>> I'm really keen on trying to implement this. So if ASF::SVN is the > >>>> canonical location for the emeritus directories, what would you suggest > >>>> we use as labels? If we follow the members.txt example, we would have a > >>>> single ASF::SVN['emeritus-directory'] that the code didn't know the > >>>> location of, but the code would still have to know the names of the > >>>> directories it contained. The svn move command would use the temp > >>>> directory to do this > >>>> 'svn update emeritus-requests-received/<filename>; > >>>> svn move emeritus-requests-received/<filename> emeritus' > >>>> And then the commit would commit both the members.txt and the tmp > >>>> directory with the move commands. > >>>> > >>>> Or perhaps ASF::SVN['emeritus-requests-received'] would be a pointer to > >>>> that directory. And now we have the question of how the svn move from > >>>> emeritus-requests-received to emeritus would be done. > >>>> > >>>> Would it help to track down all of the scripts and tooling that > >>>> currently know the location of the emeritus directories? > >>> > >>> You asked a lot of questions. :-) > >>> > >>> Let me make a concrete suggestion. Start with the following file: > >>> > >>> https://github.com/apache/whimsy/blob/master/repository.yml > >>> <https://github.com/apache/whimsy/blob/master/repository.yml> > >>> <https://github.com/apache/whimsy/blob/master/repository.yml > >>> <https://github.com/apache/whimsy/blob/master/repository.yml>> > >>> > >>> Let's take a specific example: > >>> > >>> https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92 > >>> > >>> <https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92><https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92 > >>> > >>> <https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92>> > >>> > >>> These two lines (92 and 93) associate an identifier > >>> (emeritus-requests-received) with a url > >>> (private/documents/emeritus-requests-received), and contains other > >>> meta data used by the ASF::SVN module. > >>> > >>> In an ideal world, the secretary should be able to change that URL and > >>> the ONLY thing that would need to be updated is that one line in that > >>> one file and all whimsy tools would operate properly using the new > >>> location. Everything that depends on this information should use > >>> ASF::SVN['emeritus-requests-received'}. > >> > >> Still unanswered: If we have multiple entries (one entry for each of the > >> four emeritus* directories) can we have svn move commands that move files > >> from one directory to another? > > > > Yes, both svn and svnmucc can rename files directly within the repositories. > > However only svnmucc can do multiple remote renames in a single commit. > > > >> I understand how to do it if we have a single > >> ASF::SVN['documents-emeritus'] and the code knows the names of the four > >> sub-directories. I don't know how to handle the svn mv command if we have > >> checked out four temp directories without necessarily knowing the names of > >> the directories. Can we somehow annotate the repository.yml with the names > >> of the subdirectories? > > > > I don't think it's possible to do an svn rename across different workspaces. > > > > AFAIK you have to have a single workspace which includes a common parent. > > If you checkout the full subtree from that parent, then you can > > definitely use the svn client to do multiple renames, mkdir and > > deletes locally. > > A checking will then commit everything or nothing. > > However that is likely to be a big/slow checkout. > > > > I think the workspace does not have to be a full checkout, but > > obviously has to include the relevant files, and possibly the full > > directories of source and destination. > > This is tricky to set up, which is why I suggested svnmucc. > > I think we are in agreement that big/slow is not an option.
Three options which do not require a full checkout: https://gist.github.com/rubys/d65a1d0ac7e168d0a9deebc86efcc43a > So using MultiUpdate, how do we construct the extra svn move commands from > the ASF::SVN directory names for the emeritus directories? ASF::SVN has this information, but currently only makes it available if there is a full checkout. A new method could be added. > I don't see how to do it without the application (emeritus.json.rb) knowing > the directory names. > > Craig - Sam Ruby > >> Craig > >>> > >>> So the thing to track down is all of the scripts and tooling that do > >>> not use ASF::SVN and the identifier specified in repository.yml to > >>> access this information. > >>> > >>>> Craig > >>> > >>> - Sam Ruby > >>> > >>>>> But ultimately, we need people to take ownership of this decision, and > >>>>> a part of that would be a willingness to make the necessary changes to > >>>>> make it work. > >>>>> > >>>>>> Craig > >>>>> > >>>>> - Sam Ruby > >>>>> > >>>>>>>>> > >>>>>>>>> Is it really necessary to have a common parent? > >>>>>>>> > >>>>>>>> If we don't, then we would have documents/emeritus and > >>>>>>>> documents/emeritus-requests-received and > >>>>>>>> documents/Emeritus/emeritus-requests-rescinded and > >>>>>>>> documents/Emeritus/emeritus-reinstated. I just think that this would > >>>>>>>> be awkward. > >>>>>>> > >>>>>>> I agree that would be awkward, but that's not what I meant. > >>>>>>> I am suggesting leaving them all under documents/ > >>>>>> > >>>>>> Craig L Russell > >>>>>> c...@apache.org > >>>> > >>>> Craig L Russell > >>>> c...@apache.org > >> > >> Craig L Russell > >> c...@apache.org > > Craig L Russell > c...@apache.org >