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.

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.

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

Reply via email to