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

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

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