From frederik at ofb.net Wed Jan 29 20:22:15 2020 From: frederik at ofb.net (frederik at ofb.net) Date: Wed, 29 Jan 2020 17:22:15 -0800 Subject: [Unison-hackers] UI patches, build script In-Reply-To: <20191216221534.wu3poydzumk2j2nn@localhost> References: <20191216221534.wu3poydzumk2j2nn@localhost> Message-ID: <20200130012215.GC1050@localhost> I'm not sure if my emails are getting through here, but I created some patches to attempt to correct the UI behavior which I found confusing. I thought maybe I should share them in case they are useful: https://github.com/navarum/tweaks/tree/master/unison/patches The same repo contains a build script which I use to deploy Unison across different platforms. It builds a fixed version of Unison against a fixed version of OCaml. This makes it easier for me to run Unison between (say) Raspbian and Arch. Comments welcome. Best wishes, Frederick On Mon, Dec 16, 2019 at 02:15:34PM -0800, frederik at ofb.net wrote: >Dear Unison hackers, > >I think I've mentioned this before, but often when using Unison I want to take a break from answering questions and just reconcile the changes that I've selected. For example in the following interaction > > new file <==== new file R/Makeconf [f] < > new file <-?-> new file asound.conf [] s > > Proceed with propagating updates? [] y > >I selected that R/Makeconf should be propagated in one direction. Then I perused the increasingly longer list of commands and found one that looks appropriate: > > s stop reconciling and go to the proceed menu > >I'm not sure what the "proceed menu" is, but since I selected only one update I'm pretty sure that only one thing is going to happen when I "stop reconciling" and allow Unison to "proceed". However, when I hit "s" and "y" then Unison proceeds to copy a whole bunch of stuff that I didn't ask for, and I have to Ctrl-C, which doesn't even do anything, so then I have to Ctrl-Z Ctrl-C, but meanwhile a lot of files have been copied, generally making a mess that I have to spend time cleaning up. Here's a fuller summary: http://ix.io/24Dn > >By contrast, if I hit "/" at every prompt, to skip to the next item, then nothing is propagated. > >My questions: Is my use case somehow unusual? Where did I go wrong? Or is it OK for all users to have an experience like this when learning how to use your program? > >And what exactly does 's' do, and why doesn't it have a more accurate description in the UI? > >Thanks, > >Frederick > From bcpierce at cis.upenn.edu Fri Jan 31 20:44:30 2020 From: bcpierce at cis.upenn.edu (Benjamin C. Pierce) Date: Fri, 31 Jan 2020 20:44:30 -0500 Subject: [Unison-hackers] UI patches, build script In-Reply-To: <20200130012215.GC1050@localhost> References: <20191216221534.wu3poydzumk2j2nn@localhost> <20200130012215.GC1050@localhost> Message-ID: This does look like an improvement. Would you mind packaging it as a pull request? Thank you! - Benjamin > On Jan 29, 2020, at 8:22 PM, frederik at ofb.net wrote: > > I'm not sure if my emails are getting through here, but I created some patches to attempt to correct the UI behavior which I found confusing. I thought maybe I should share them in case they are useful: > > https://github.com/navarum/tweaks/tree/master/unison/patches > > The same repo contains a build script which I use to deploy Unison across different platforms. It builds a fixed version of Unison against a fixed version of OCaml. This makes it easier for me to run Unison between (say) Raspbian and Arch. Comments welcome. > > Best wishes, > > Frederick > > On Mon, Dec 16, 2019 at 02:15:34PM -0800, frederik at ofb.net wrote: >> Dear Unison hackers, >> >> I think I've mentioned this before, but often when using Unison I want to take a break from answering questions and just reconcile the changes that I've selected. For example in the following interaction >> >> new file <==== new file R/Makeconf [f] < >> new file <-?-> new file asound.conf [] s >> >> Proceed with propagating updates? [] y >> >> I selected that R/Makeconf should be propagated in one direction. Then I perused the increasingly longer list of commands and found one that looks appropriate: >> >> s stop reconciling and go to the proceed menu >> >> I'm not sure what the "proceed menu" is, but since I selected only one update I'm pretty sure that only one thing is going to happen when I "stop reconciling" and allow Unison to "proceed". However, when I hit "s" and "y" then Unison proceeds to copy a whole bunch of stuff that I didn't ask for, and I have to Ctrl-C, which doesn't even do anything, so then I have to Ctrl-Z Ctrl-C, but meanwhile a lot of files have been copied, generally making a mess that I have to spend time cleaning up. Here's a fuller summary: http://ix.io/24Dn >> >> By contrast, if I hit "/" at every prompt, to skip to the next item, then nothing is propagated. >> >> My questions: Is my use case somehow unusual? Where did I go wrong? Or is it OK for all users to have an experience like this when learning how to use your program? >> >> And what exactly does 's' do, and why doesn't it have a more accurate description in the UI? >> >> Thanks, >> >> Frederick >> > _______________________________________________ > Unison-hackers mailing list > Unison-hackers at LISTS.SEAS.UPENN.EDU > https://LISTS.SEAS.UPENN.EDU/mailman/listinfo/unison-hackers From frederik at ofb.net Fri Jan 31 23:31:17 2020 From: frederik at ofb.net (frederik at ofb.net) Date: Fri, 31 Jan 2020 20:31:17 -0800 Subject: [Unison-hackers] UI patches, build script In-Reply-To: References: <20191216221534.wu3poydzumk2j2nn@localhost> <20200130012215.GC1050@localhost> Message-ID: <20200201043117.GA61419@localhost> Thank you Benjamin. I'm not sure why a PR would make it easier, is that like a digital signature or something? There are presumably comments and other things that you would want to clean up by hand. I can do it, but I'm guessing you want only the first patch. The comment in the second patch describes it as a "work in progress". It tries to fix some behavior that was added recently with all the "matching" predicates, in particular "%", but other commands need to be changed to make them consistent. The current behavior is confusing to me because the predicates don't apply to the current file, only the ones after. So if you want to do something for every file, you have to treat the first one differently from 2..n: $ unison a ssh://thutmose/a Unison 2.51.2 (ocaml 4.08.1): Contacting server... Connected [//ptolemy//home/frederik/a -> //thutmose//home/frederik/a] Looking for changes Waiting for changes from server Reconciling changes local thutmose new file ----> baz [f] L # list all changes new file ----> baz new file ----> foo new file ----> baz [f] 1 # match all changes propagating -> Enabling matching condition new file ----> baz [f] / # skip matching files new file ----> baz [f] L # foo is skipped, but not baz new file ----> baz I just verified that I can apparently fix this by changing "rest" to "ril" in "actOnMatching", but you might want to check with whoever wrote that code (G.raud?) to make sure this is the right thing to do. The new patch is number 3 here https://github.com/navarum/tweaks/tree/master/unison/patches Thanks, Frederick On Fri, Jan 31, 2020 at 08:44:30PM -0500, Benjamin C. Pierce wrote: >This does look like an improvement. Would you mind packaging it as a pull request? > >Thank you! > > - Benjamin > >> On Jan 29, 2020, at 8:22 PM, frederik at ofb.net wrote: >> >> I'm not sure if my emails are getting through here, but I created some patches to attempt to correct the UI behavior which I found confusing. I thought maybe I should share them in case they are useful: >> >> https://github.com/navarum/tweaks/tree/master/unison/patches >> >> The same repo contains a build script which I use to deploy Unison across different platforms. It builds a fixed version of Unison against a fixed version of OCaml. This makes it easier for me to run Unison between (say) Raspbian and Arch. Comments welcome. >> >> Best wishes, >> >> Frederick >> >> On Mon, Dec 16, 2019 at 02:15:34PM -0800, frederik at ofb.net wrote: >>> Dear Unison hackers, >>> >>> I think I've mentioned this before, but often when using Unison I want to take a break from answering questions and just reconcile the changes that I've selected. For example in the following interaction >>> >>> new file <==== new file R/Makeconf [f] < >>> new file <-?-> new file asound.conf [] s >>> >>> Proceed with propagating updates? [] y >>> >>> I selected that R/Makeconf should be propagated in one direction. Then I perused the increasingly longer list of commands and found one that looks appropriate: >>> >>> s stop reconciling and go to the proceed menu >>> >>> I'm not sure what the "proceed menu" is, but since I selected only one update I'm pretty sure that only one thing is going to happen when I "stop reconciling" and allow Unison to "proceed". However, when I hit "s" and "y" then Unison proceeds to copy a whole bunch of stuff that I didn't ask for, and I have to Ctrl-C, which doesn't even do anything, so then I have to Ctrl-Z Ctrl-C, but meanwhile a lot of files have been copied, generally making a mess that I have to spend time cleaning up. Here's a fuller summary: http://ix.io/24Dn >>> >>> By contrast, if I hit "/" at every prompt, to skip to the next item, then nothing is propagated. >>> >>> My questions: Is my use case somehow unusual? Where did I go wrong? Or is it OK for all users to have an experience like this when learning how to use your program? >>> >>> And what exactly does 's' do, and why doesn't it have a more accurate description in the UI? >>> >>> Thanks, >>> >>> Frederick >>> >> _______________________________________________ >> Unison-hackers mailing list >> Unison-hackers at LISTS.SEAS.UPENN.EDU >> https://LISTS.SEAS.UPENN.EDU/mailman/listinfo/unison-hackers > >_______________________________________________ >Unison-hackers mailing list >Unison-hackers at LISTS.SEAS.UPENN.EDU >https://LISTS.SEAS.UPENN.EDU/mailman/listinfo/unison-hackers >