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