On Tue, 2 Jun 2020 at 19:01, Craig Russell <apache....@gmail.com> wrote:
>
>
>
> > On Jun 2, 2020, at 9:06 AM, Sam Ruby <ru...@intertwingly.net> wrote:
> >
> > On Tue, Jun 2, 2020 at 10:49 AM Craig Russell <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>> 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>>> wrote:
> >>>>
> >>>>> On Jun 1, 2020, at 4:58 PM, sebb <seb...@gmail.com> wrote:
> >>>>>
> >>>>> On Mon, 1 Jun 2020 at 23:20, Craig Russell <apache....@gmail.com> wrote:
> >>>>>>
> >>>>>>> On Jun 1, 2020, at 2:42 PM, sebb <seb...@gmail.com> wrote:
> >>>>>>>
> >>>>>>> On Mon, 1 Jun 2020 at 22:30, Craig Russell <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>
> >
> > 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>
> >
> > 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.

> 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
>

Reply via email to