On Tue, 2 Jun 2020 at 01:45, Craig Russell <apache....@gmail.com> wrote:
>
>
>
> > On Jun 1, 2020, at 4:52 PM, sebb <seb...@gmail.com> wrote:
> >
> > On Mon, 1 Jun 2020 at 23:30, Craig Russell <apache....@gmail.com 
> > <mailto:apache....@gmail.com>> wrote:
> >>
> >>
> >>
> >>> On Jun 1, 2020, at 3:17 PM, sebb <seb...@gmail.com 
> >>> <mailto:seb...@gmail.com>> wrote:
> >>>
> >>> On Mon, 1 Jun 2020 at 22:42, Craig Russell <apache....@gmail.com 
> >>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com 
> >>> <mailto:apache....@gmail.com>>> wrote:
> >>>>
> >>>>
> >>>>
> >>>>> On Jun 1, 2020, at 12:28 PM, sebb <seb...@gmail.com> wrote:
> >>>>>
> >>>>> On Mon, 1 Jun 2020 at 19:59, Craig Russell <apache....@gmail.com> wrote:
> >>>>>>
> >>>>>> I know there are more messages in this thread, but this is the most 
> >>>>>> relevant for actually making a change in whimsy.
> >>>>>>
> >>>>>> IIUC, we want to allow _svn.update to take an array of references as 
> >>>>>> the first argument, and using metadata from elsewhere, check out all 
> >>>>>> of the arguments.
> >>>>>
> >>>>> Whilst it might be possible to do this in the existing method, I think
> >>>>> it would be better to create a new method.
> >>>>> This would also be easier to test and debug without breaking existing 
> >>>>> code.
> >>>>
> >>>> Something like updateMultiple
> >>>>
> >>>> The first argument is an array of file/directory references. Each 
> >>>> reference uses the same logic as in the current update method to either 
> >>>> check out the directory or the file. And then after return from the 
> >>>> callback, all of the file/directories would be committed.
> >>>>
> >>>> The yield callback would deliver an array of temp directories and an 
> >>>> array of files, corresponding to the array of file/directory references 
> >>>> in the first argument. The callback would have to remember which of the 
> >>>> elements in the array to use.
> >>>>
> >>>> In our case here, we would use file[0] in the callback to get the 
> >>>> checked-out members.txt. We would use dir[1] to get the checked-out 
> >>>> Emeritus/emeritus-requests-received and dir[2] to get the checked-out 
> >>>> Emeritus/emeritus directory.
> >>>>
> >>>> Would we even need both directories?
> >>>
> >>> I don't think rename works across separate workspaces.
> >>
> >> So we have a sparse checkout of Emeritus and then individual svn update of 
> >> the emeritus-requests-received/stem.txt. Then svn mv from there to either 
> >> emeritus or emeritus-requests-rescinded.
> >>>
> >>>> Would we/should we use Emeritus as the checked-out directory and use svn 
> >>>> commands to check out and move files in the emeritus-requests-received 
> >>>> and emeritus directories?
> >>>
> >>> Yes, the emeritus files need to have a shared parent in order to do
> >>> the rename, but
> >>> I don't think it particularly helps to change the shared parent from
> >>> /documents to /documents/Emeritus.
> >>>
> >>> AFAICT it only makes sense to create the extra level if the whole
> >>> subtree is to be checked out.
> >>> Do we really want to do that?
> >>
> >> Not needed just for move from one parent to another.
> >>
> >>> Surely we just want to do a sparse checkout of all the relevant
> >>> emeritus directories?
> >>
> >> Yes.
> >>
> >>> In which case this can be done from /documents just as easily as
> >>> /documents/Emeritus
> >>
> >> Except for readability of the tool.
> >
> > I think the difference will be marginal.
> > * checkout immediates of Emeritus
> > versus
> > * empty checkout of documents, followed by empty checkouts of up to 4
> > emeritus dirs
> >
> > In each case you then need to checkout the affected paths
>
> I agree.
> >
> > Introduction of the Emeritus parent will require changes elsewhere, so
> > it  is not cost-free.
>
> I agree. Do you know of any other places where there is tooling except for 
> the workbench that puts a new request into emeritus-request-received?

No, but moving documents/emeritus will cause issues.

> >
> >>>
> >>> I suspect using svnmucc will be a lot easier than svn.
> >>> This is because the rename can be done remotely, i.e. no need to do a
> >>> checkout of any emeritus files.
> >>> The co-routine needs to update the file and pass back details of what
> >>> else to commit.
> >>
> >> I think the co-routine return should only pass back an array of results of 
> >> updating files (members.txt). The updateMultiple would then replace the 
> >> file(s) that were changed. And the commit would commit the changed file 
> >> plus the checked-out directories.
> >
> > For the updateMultiple case, yes, but here I was referring to the
> > svnmucc alternative.
>
> > Since its co-routine does not actually do an svn move, it needs
> > instead to pass back what to rename.
>
> I have not looked at svnmucc. Do you still think that is a worthwhile 
> investigation?

Yes, I used it a while back for JMeter.
I have nearly got a PoC ready to commit, but it is getting late.
Hope to push something tomorrow.

> Craig
> >
> >> Craig
> >>>
> >>>> Craig
> >>>>
> >>>>>
> >>>>>> The co-routine will make changes in some files (members.txt) and move 
> >>>>>> files from one directory 
> >>>>>> (documents/Emeritus/emeritus-requests-received) to another directory 
> >>>>>> (documents/Emeritus/emeritus-requests-rescinded) and then commit all 
> >>>>>> of them in one svn commit.
> >>>>>
> >>>>> Almost.
> >>>>> The co-routine does not do the commit; that is done by the caller.
> >>>>>
> >>>>>> Did I get that right?
> >>>>>>
> >>>>>> Craig
> >>>>>>
> >>>>>>> On Jun 1, 2020, at 5:19 AM, Sam Ruby <ru...@intertwingly.net> wrote:
> >>>>>>>
> >>>>>>> My feeling is mixed.
> >>>>>>>
> >>>>>>> I am not a fan of emeritus-* directories littering the
> >>>>>>> private/documents directory.  Making them subfolders of an Emeritus
> >>>>>>> folder appeals to me.
> >>>>>>>
> >>>>>>> Like Sebb, I'd also think twice before considering moving members.txt.
> >>>>>>>
> >>>>>>> That being said, the idea of a single, atomic, commit appeals to me.
> >>>>>>>
> >>>>>>> Currently the following command returns an Access forbidden violation:
> >>>>>>>
> >>>>>>> svn checkout https://svn.apache.org/repos/private --depth empty
> >>>>>>>
> >>>>>>> It should be possible to make that work, with an ACL set up for ASF
> >>>>>>> members.  Whether it is implemented as a new library function or via
> >>>>>>> new arguments to the existing function, it should be possible to
> >>>>>>> checkout out an empty copy of the entire private repository to a
> >>>>>>> temporary folder, and within that folder run svn update commands to
> >>>>>>> get the latest contents for individual files, then change the contents
> >>>>>>> of those file as well as other related svn add, svn move, or svn
> >>>>>>> delete commands, and then do a single svn commit.
> >>>>>>>
> >>>>>>> - Sam Ruby
> >>>>>>>
> >>>>>>> On Mon, Jun 1, 2020 at 7:41 AM sebb <seb...@gmail.com> wrote:
> >>>>>>>>
> >>>>>>>> On Sun, 31 May 2020 at 20:03, Craig Russell <apache....@gmail.com> 
> >>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> The following is excerpted from memstat.json.rb. It assumes that we 
> >>>>>>>>> have moved all of the emeritus files from subdirectories of 
> >>>>>>>>> documents to subdirectories of documents/Emeritus.
> >>>>>>>>>
> >>>>>>>>> EMERITUS_DIR = ASF::SVN['documents/Emeritus']
> >>>>>>>>> ... after the update of members.txt
> >>>>>>>>> # update the emeritus files
> >>>>>>>>> if @action == 'emeritus'
> >>>>>>>>> _svn.update (EMERITUS_DIR, 'Update emeritus file', env, _ do ||
> >>>>>>>>>   _.system "svn mv emeritus-requests-received/{@emeritusfilename} 
> >>>>>>>>> emeritus"
> >>>>>>>>> end
> >>>>>>>>> elsif @action == 'rescind_emeritus'
> >>>>>>>>> _svn.update (EMERITUS_DIR, 'Update emeritus file', env, _ do ||
> >>>>>>>>>   _.system "svn mv emeritus-requests-received/{@emeritusfilename} 
> >>>>>>>>> emeritus-requests-rescinded"
> >>>>>>>>> end
> >>>>>>>>> end
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> WDYT?
> >>>>>>>>
> >>>>>>>> I am not keen on moving things around.
> >>>>>>>> In particular, members.txt is likely to be used in lots of places.
> >>>>>>>>
> >>>>>>>> Note also the currently the emeritus/ and emeritus-requests-received/
> >>>>>>>> directories are not checked out; they are listings only.
> >>>>>>>> We should also avoid having such files checked out if possible.
> >>>>>>>>
> >>>>>>>> It may be harder to automate, but that is far preferable to making
> >>>>>>>> layout changes and adding unnecessary checkouts to Whimsy.
> >>>>>>>>
> >>>>>>>>> Craig
> >>>>>>>>>
> >>>>>>>>>> On May 31, 2020, at 10:44 AM, Craig Russell <apache....@gmail.com> 
> >>>>>>>>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> On May 31, 2020, at 10:36 AM, Craig Russell <apache....@gmail.com 
> >>>>>>>>>>> <mailto:apache....@gmail.com>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>> On May 31, 2020, at 5:55 AM, Sam Ruby <ru...@intertwingly.net 
> >>>>>>>>>>>> <mailto:ru...@intertwingly.net>> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Sun, May 31, 2020 at 12:50 AM Craig Russell 
> >>>>>>>>>>>> <apache....@gmail.com <mailto:apache....@gmail.com>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> So now I just need an example of svn code executed with no 
> >>>>>>>>>>>>> update block and some code executed inside the update block.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Publishing minutes after a board meeting involves a number of 
> >>>>>>>>>>>> updates
> >>>>>>>>>>>> to different svn repositories:
> >>>>>>>>>>>>
> >>>>>>>>>>>> https://github.com/apache/whimsy/blob/master/www/board/agenda/views/actions/publish.json.rb
> >>>>>>>>>>>>  
> >>>>>>>>>>>> <https://github.com/apache/whimsy/blob/master/www/board/agenda/views/actions/publish.json.rb>
> >>>>>>>>>>>>
> >>>>>>>>>>>> This example shows issuing svn commands within the block.
> >>>>>>>>>>>>
> >>>>>>>>>>>> A few things to note:
> >>>>>>>>>>>>
> >>>>>>>>>>>> 1) If the block only takes one argument, then it is provided 
> >>>>>>>>>>>> with a
> >>>>>>>>>>>> tmpdir only.  It is up to you to do any and all svn commands 
> >>>>>>>>>>>> except
> >>>>>>>>>>>> for the final commit.
> >>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> 2) While you can spawn any command within the block (svn or 
> >>>>>>>>>>>> otherwise)
> >>>>>>>>>>>> any way you like, wunderbar provides an _.system method that will
> >>>>>>>>>>>> capture the stdout and stderr and add it to the transcript 
> >>>>>>>>>>>> provided in
> >>>>>>>>>>>> the response back to the client.
> >>>>>>>>>>>>
> >>>>>>>>>>>> 3) As sebb points out, a full temporary checkout of a directory 
> >>>>>>>>>>>> like
> >>>>>>>>>>>> https://svn.apache.org/repos/private//documents 
> >>>>>>>>>>>> <https://svn.apache.org/repos/private//documents> would be 
> >>>>>>>>>>>> impractical.
> >>>>>>>>>>>> Perhaps instead of emeritus-rejoined, 
> >>>>>>>>>>>> emeritus-requests-received, and
> >>>>>>>>>>>> emeritus-requests-rescinded directories that are sister 
> >>>>>>>>>>>> directories to
> >>>>>>>>>>>> the emeritus directory, there could be a single emeritus 
> >>>>>>>>>>>> directory
> >>>>>>>>>>>> which contains a number of subdirectories.  An example of such a
> >>>>>>>>>>>> structure is 
> >>>>>>>>>>>> https://svn.apache.org/repos/private/financials/Bills 
> >>>>>>>>>>>> <https://svn.apache.org/repos/private/financials/Bills>.
> >>>>>>>>>>>
> >>>>>>>>>>> Here's a way forward that changes a lot but makes the technical 
> >>>>>>>>>>> solution easier.
> >>>>>>>>>>>
> >>>>>>>>>>> svn mkdir foundation/Members
> >>>>>>>>>>> svn mv foundation/members.txt foundation/Members
> >>>>>>>>>>> svn mv documents/emeritus foundation/Members
> >>>>>>>>>>> svn mv documents/emeritus-requests-received foundation/Members
> >>>>>>>>>>> svn mv documents/emeritus-requests-rescinded foundation/Members
> >>>>>>>>>>> svn mv documents/emeritus-reinstated foundation/Members
> >>>>>>>>>>>
> >>>>>>>>>>> Then, the _svn.update would checkout the entire Members directory 
> >>>>>>>>>>> which consists solely of the members.txt and the various emeritus 
> >>>>>>>>>>> files. And the _svn.update function would commit everything or 
> >>>>>>>>>>> nothing.
> >>>>>>>>>>>
> >>>>>>>>>>> An alternative is to do the _svn.update of members.txt first and 
> >>>>>>>>>>> if successful, do the move of the emeritus files, which unless 
> >>>>>>>>>>> something is seriously messed up, will "always succeed".
> >>>>>>>>>>
> >>>>>>>>>> In order for this to work we also need to implement part of the 
> >>>>>>>>>> above, moving everything but members.txt to a new directory, which 
> >>>>>>>>>> could be in documents/Members instead of foundation/Members. Then, 
> >>>>>>>>>> the directory checked out in the _svn.update would be the 
> >>>>>>>>>> documents/Members directory which includes all of the emeritus 
> >>>>>>>>>> files.
> >>>>>>>>>>
> >>>>>>>>>> This is probably my first choice because it's minimum disruption 
> >>>>>>>>>> to the existing tools and will significantly help secretary in 
> >>>>>>>>>> filing emeritus requests.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Craig
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>> Craig
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Craig L Russell
> >>>>>>>>>>> c...@apache.org <mailto:c...@apache.org>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Craig L Russell
> >>>>>>>>>> c...@apache.org <mailto:c...@apache.org>
> >>>>>>>>> Craig L Russell
> >>>>>>>>> c...@apache.org
> >>>>>>>>>
> >>>>>>
> >>>>>> Craig L Russell
> >>>>>> c...@apache.org
> >>>>>>
> >>>>
> >>>> Craig L Russell
> >>>> c...@apache.org
> >>
> >> Craig L Russell
> >> c...@apache.org
>
> Craig L Russell
> c...@apache.org
>

Reply via email to