Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
fatkasuvayu+li...@gmail.com writes: I think the issue with tools like Unison, Dropbox, is conflict resolution on simultaneous edits. Traditional version control does a better job of that, but then it loses the convenience of these other tools. I believe there is a list member (Alan) close to Unison development; in the thread referenced by Samuel there is some discussion on how this could be done in a more well defined manner. Unison can call external tools to merge conflicting files. If someone wants to use such a tool with unison, I can definitely give a hand. Alan
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Hi Alan, On Thu, Sep 05, 2013 at 10:50:18AM +0200, Alan Schmitt wrote: fatkasuvayu+li...@gmail.com writes: I think the issue with tools like Unison, Dropbox, is conflict resolution on simultaneous edits. Traditional version control does a better job of that, but then it loses the convenience of these other tools. I believe there is a list member (Alan) close to Unison development; in the thread referenced by Samuel there is some discussion on how this could be done in a more well defined manner. Unison can call external tools to merge conflicting files. If someone wants to use such a tool with unison, I can definitely give a hand. If you can find the time, I have a somewhat more involved proposal for you :). I think this would be a wonderful addition to Worg. Probably the FAQ is more appropriate (under Tips and Tricks) since this is one of most commonly asked questions on the list. On the other hand, if you think covering this topic requires more than just a few lines, a longer entry or short article in the config section would be more appropriate. Cheers, -- Suvayu Open source is the future. It sets us free.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Hi, fatkasuvayu+li...@gmail.com writes: Hi Alan, On Thu, Sep 05, 2013 at 10:50:18AM +0200, Alan Schmitt wrote: fatkasuvayu+li...@gmail.com writes: I think the issue with tools like Unison, Dropbox, is conflict resolution on simultaneous edits. Traditional version control does a better job of that, but then it loses the convenience of these other tools. I believe there is a list member (Alan) close to Unison development; in the thread referenced by Samuel there is some discussion on how this could be done in a more well defined manner. Unison can call external tools to merge conflicting files. If someone wants to use such a tool with unison, I can definitely give a hand. If you can find the time, I have a somewhat more involved proposal for you :). I think this would be a wonderful addition to Worg. Probably the FAQ is more appropriate (under Tips and Tricks) since this is one of most commonly asked questions on the list. On the other hand, if you think covering this topic requires more than just a few lines, a longer entry or short article in the config section would be more appropriate. I can't promise anything, but I can try to write something. What external merging tool should I use? Thanks, Alan
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
* Alan Schmitt alan.schm...@polytechnique.org wrote: Hi, Hi, fatkasuvayu+li...@gmail.com writes: I think this would be a wonderful addition to Worg. Absolutely! I am using unison as well. So far, I resolved conflicts (I try to do anything I can to avoid them) very basic manually. I'd love to learn how to do it with software support in a quick how-to. I can't promise anything, but I can try to write something. What external merging tool should I use? I haven't used it yet but I read that Emacs offers some kind of a 3-way-merger ... -- mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode: get Memacs from https://github.com/novoid/Memacs https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
On Thu, Sep 05, 2013 at 12:00:02PM +0200, Alan Schmitt wrote: Hi, fatkasuvayu+li...@gmail.com writes: I think this would be a wonderful addition to Worg. Probably the FAQ is more appropriate (under Tips and Tricks) since this is one of most commonly asked questions on the list. On the other hand, if you think covering this topic requires more than just a few lines, a longer entry or short article in the config section would be more appropriate. I can't promise anything, but I can try to write something. What external merging tool should I use? I think the most appropriate tool would be org-merge-driver. But I'm not sure how reliable it is. That said, what might be nicer is if you treat the external tool bits generically. Then people can choose their own tools in the future; also that will probably be less work for you since you don't have to figure out the details of the external merging tool yourself. What I'm after is having all the Unison config bits on Worg, then people choose how they want to use it: 1. plain sync, 2. sync with merging (with their own choice of tools) I or someone else could then add the Dropbox like, and version control (Git) way of syncing. This would then be a fairly complete FAQ on synchronisation questions. Does that seem feasible to you? Thanks a lot, :) -- Suvayu Open source is the future. It sets us free.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
On Thu, Sep 05 2013, Karl Voit wrote: * Alan Schmitt alan.schm...@polytechnique.org wrote: I can't promise anything, but I can try to write something. What external merging tool should I use? I haven't used it yet but I read that Emacs offers some kind of a 3-way-merger ... and then there is an early git-merge-tool[1] or rather the org-merge-driver for git. i've been using it for half a year now for my org files in git, although i seldom have conflicts, as we're just a small group. maybe somebody on the list has more info on its status? cheers, jonas Footnotes: [1] http://orgmode.org/worg/org-contrib/gsoc2012/student-projects/git-merge-tool/index.html pgp8Skx0v2CKJ.pgp Description: PGP signature
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
I have a problem. I need to sync my files between several devices (currently 3). I don't use multiple machines. I use unison to copy files between Hard disk and USB disk. Apparently unison is superior to rsync.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
fatkasuvayu+li...@gmail.com writes: On Thu, Sep 05, 2013 at 12:00:02PM +0200, Alan Schmitt wrote: Hi, fatkasuvayu+li...@gmail.com writes: I think this would be a wonderful addition to Worg. Probably the FAQ is more appropriate (under Tips and Tricks) since this is one of most commonly asked questions on the list. On the other hand, if you think covering this topic requires more than just a few lines, a longer entry or short article in the config section would be more appropriate. I can't promise anything, but I can try to write something. What external merging tool should I use? I think the most appropriate tool would be org-merge-driver. But I'm not sure how reliable it is. That said, what might be nicer is if you treat the external tool bits generically. Then people can choose their own tools in the future; also that will probably be less work for you since you don't have to figure out the details of the external merging tool yourself. It makes sense. What I'm after is having all the Unison config bits on Worg, then people choose how they want to use it: 1. plain sync, 2. sync with merging (with their own choice of tools) I or someone else could then add the Dropbox like, and version control (Git) way of syncing. This would then be a fairly complete FAQ on synchronisation questions. Does that seem feasible to you? I've been playing with the merging using ediff, and it works. I'll explain it here, and depending on the feedback, I'll put it on worg. Alan * Synchronizing org files with Unison This describes how to synchronize org files using the [[http://www.cis.upenn.edu/~bcpierce/unison/][Unison file synchronizer]], as well as how to configure it to use an external tool to merge conflicting edits. ** Prerequisites You should have Unison up and running. Binaries can be found [[http://www.cis.upenn.edu/~bcpierce/unison/download.html][here]] and the documentation is [[http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html][here]]. ** Synchronization Unison is a file synchronizer, thus it may be used to synchronize org files. To configure Unison, on uses a /profile/ which states where the things to synchronize are as well as some options. Assuming I want to synchronize the files in ~/Users/schmitta/dir1~ and ~/Users/schmitta/dir2~, the profile would look like this #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = /Users/schmitta/dir2 #+END_EXAMPLE In most cases Unison will be used with a remote machine. The local machine is called the /client/ and the remote one the /server/. For such remote synchronization, the ~unison~ binary must be installed in the server as well. The simplest way to connect to the machine is using ssh. One should check that unison can be found there by doing ~ssh user@remote unison -version~. If ~unison~ cannot be found in the path, one may set the ~servercmd~ option as indicated in the next example. (Please see the [[http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#roots][manual section on roots]] for further details.) #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = ssh://user@remote/relative/path/to/dir2 servercmd = /usr/bin/unison #+END_EXAMPLE ** Merging As Unison works on the level of files, it will trigger a /conflict/ if both files have changed since the last synchronization. In that case one can only choose which file to keep, which is not satisfying. Unison offers the possibility to use external tools to merge the files. There is an [[http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#merge][extensive manual section]] regarding this, we'll just describe how to use emacs and ediff to do it. For better merging, we will ask unison to keep the last synchronized version of every org file on the client; this way we can use ediff with ancestor. These ~currentbackup~ files may live alongside the synchronized files (with names of the form ~.bak.version.name~, which is configurable) or in a central location. Here is the modified configuration file. #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = ssh://user@remote/relative/path/to/dir2 servercmd = /usr/bin/unison backupcurrent = Name *.org backuplocation = local maxbackups = 0 merge = Name *.org - emacsclient -c --eval '(ediff-merge-files-with-ancestor CURRENT1 CURRENT2 CURRENTARCH nil NEW)' #+END_EXAMPLE The ~backupcurrent~ option tells unison to keep a backup of the last synchronized version of ever file with an ~org~ extension. The location of the backup should be local (alongside the file). Finally, no other backup should be created. Next follows the merge command. For every org file in conflict, use the command that launches a new emacs frame calling the ediff with ancestor function. The ~CURRENT1~, ~CURRENT2~, and ~CURRENTARCH~ strings are replaced with the file from the first root, the file from the second root, and the last synchronized version.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Just a few typo/editorial comments. On Thu, Sep 05, 2013 at 02:31:42PM +0200, Alan Schmitt wrote: * Synchronizing org files with Unison This describes how to synchronize org files using the [[http://www.cis.upenn.edu/~bcpierce/unison/][Unison file synchronizer]], as well as how to configure it to use an external tool to merge conflicting edits. ** Prerequisites You should have Unison up and running. Binaries can be found [[http://www.cis.upenn.edu/~bcpierce/unison/download.html][here]] and the documentation is [[http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html][here]]. ** Synchronization Unison is a file synchronizer, thus it may be used to synchronize org files. To configure Unison, on uses a /profile/ which states where the things to on uses - one uses synchronize are as well as some options. Assuming I want to synchronize the files in ~/Users/schmitta/dir1~ and ~/Users/schmitta/dir2~, the profile would look like this #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = /Users/schmitta/dir2 #+END_EXAMPLE In most cases Unison will be used with a remote machine. The local machine is called the /client/ and the remote one the /server/. For such remote synchronization, the ~unison~ binary must be installed in the server as well. The simplest way to connect to the machine is using ssh. One should check that unison can be found there by doing ~ssh user@remote unison -version~. If ~unison~ cannot be found in the path, one may set the ~servercmd~ option as indicated in the next example. (Please see the [[http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#roots][manual section on roots]] for further details.) #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = ssh://user@remote/relative/path/to/dir2 servercmd = /usr/bin/unison #+END_EXAMPLE ** Merging As Unison works on the level of files, it will trigger a /conflict/ if both files have changed since the last synchronization. In that case one can only choose which file to keep, which is not satisfying. Unison offers the Maybe satisfactory is better than satisfying? possibility to use external tools to merge the files. There is an [[http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#merge][extensive manual section]] regarding this, we'll just describe how to use emacs and ediff to do it. For better merging, we will ask unison to keep the last synchronized version of every org file on the client; this way we can use ediff with ancestor. These ~currentbackup~ files may live alongside the synchronized files (with names of the form ~.bak.version.name~, which is configurable) or in a central location. Here is the modified configuration file. #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = ssh://user@remote/relative/path/to/dir2 servercmd = /usr/bin/unison backupcurrent = Name *.org backuplocation = local maxbackups = 0 merge = Name *.org - emacsclient -c --eval '(ediff-merge-files-with-ancestor CURRENT1 CURRENT2 CURRENTARCH nil NEW)' #+END_EXAMPLE The ~backupcurrent~ option tells unison to keep a backup of the last synchronized version of ever file with an ~org~ extension. The location of the ever file - every file backup should be local (alongside the file). Finally, no other backup should be created. Next follows the merge command. For every org file in conflict, use the command that launches a new emacs frame calling the ediff with ancestor function. The ~CURRENT1~, ~CURRENT2~, and ~CURRENTARCH~ strings are replaced with the file from the first root, the file from the second root, and the last synchronized version. The ~NEW~ file is where Unison expects the file to be saved (which will be done by the ediff session). Thus, when an org file has been modified on both hosts, an ediff session will be launched in a new frame. Closing the frame will make Unison commit the merge (it waits until the command has finished). If one does not want to use backups, it's possible to use the simpler ediff (without ancestor) command as follows. #+BEGIN_EXAMPLE root = /Users/schmitta/dir1 root = ssh://user@remote/relative/path/to/dir2 servercmd = /usr/bin/unison merge = Name *.org - emacsclient -c --eval '(ediff-merge-files CURRENT1 CURRENT2 nil NEW)' #+END_EXAMPLE This a very clear and complete write-up. Thanks a lot Alan! :) -- Suvayu Open source is the future. It sets us free.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
fatkasuvayu+li...@gmail.com writes: Just a few typo/editorial comments. I fixed them. This a very clear and complete write-up. Thanks a lot Alan! :) Thanks. It's online at http://orgmode.org/worg/org-tutorials/unison-sync.html (I also changed the index page to point at it). Alan
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Alan Schmitt writes: I can't promise anything, but I can try to write something. What external merging tool should I use? There was some work done in a Summer of Code last year or the year before. I don't know how much more work remains. It was an effort for a delta operator for git. I use a multi-system git environment, and the one area that is beyond the git capabilities at present is the following kind of problem: There is a repeating daily task with a log file. On machine A, the task is finished on Monday, Wednesday, and Friday. On machine B, the task is finished on Tuesday, Thursday, and Saturday. Git does not understand the task structure, nor does it understand date oriented logs. It recognizes that there is a stretch of logfile and task structure that needs my human intervention and leaves that part for me to fix. I have to cut the log entries from machine A version and put them into the log from machine B version in proper date order. The last complete and next lines will come from machine B because they are more recent. I understand the date orientation, task structure, etc. Git does not. Proper understanding of things like interleaving date related entries is a difficult task to get right. It would be enough to get it 80% right with 0% improper fixes, and 20% identified for human merging. But to reach this level means understanding all the different users of date tagged lines, entries, headlines, etc. in the org structure. R Horn
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Hi, My aproach is low-tech. I manage two special files: - token.txt, which (through shell-scripts) moves around with me and helps to check, that I do not have multiple emacs open on different machines. - open.txt, which is created by a small piece of elisp and helps to check, that I do not have multiple emacs open on the same machine. With both files I can be sure, that there is only one single instance of emacs open on all my devices (other instances of emacs at least display a warning message). Having this, synchronisation with rsync is quite easy. With this approach I do not have merge conflicts (unless I mess up things occasionally :-). I use several instances of windows and linux, that are connected by network or usb-stick. best regards, Marc
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
On Tue, Sep 03, 2013 at 11:34:52PM +0200, nore...@maillard.im wrote: Hello, I have a problem. I need to sync my files between several devices (currently 3). At first, I thought the solution would have been to use mobileorg (that made sense since I also use an android device) but as far as I understand it, it is not really designed for that purpose (I have several agendas.org staying in the hierarchy with conflicts from all sources...) How do you sync your files easily and share them between 3, 4 or even more places ? I use Git. -- Suvayu Open source is the future. It sets us free.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
On Sep 4, 2013, at 3:04 PM, Suvayu Ali fatkasuvayu+li...@gmail.com wrote: On Tue, Sep 03, 2013 at 11:34:52PM +0200, nore...@maillard.im wrote: Hello, I have a problem. I need to sync my files between several devices (currently 3). At first, I thought the solution would have been to use mobileorg (that made sense since I also use an android device) but as far as I understand it, it is not really designed for that purpose (I have several agendas.org staying in the hierarchy with conflicts from all sources...) How do you sync your files easily and share them between 3, 4 or even more places ? I use Git. You might try unison. Works for me. -- Suvayu Open source is the future. It sets us free.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
nore...@maillard.im writes: I have a problem. I need to sync my files between several devices (currently 3). At first, I thought the solution would have been to use mobileorg (that made sense since I also use an android device) but as far as I understand it, it is not really designed for that purpose (I have several agendas.org staying in the hierarchy with conflicts from all sources...) How do you sync your files easily and share them between 3, 4 or even more places ? Dropbox. I also use bitbucket for coding projects proper, but its overkill if you just want to keep up to date with latest versions of files. The nice thing about using Dropbox is that you don't need to check anything in - as long as you save files you can just work away from you desktop and then pick things up exactly where you left off on your laptop. If you have changes that you need to merge together on different devices then you probably do want to use git or similar.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Hi, nore...@maillard.im writes: How do you sync your files easily and share them between 3, 4 or even more places ? You might find the answer to that question in a previous thread: http://www.mail-archive.com/emacs-orgmode@gnu.org/msg73502.html Hope that helps. Best, -- Konubinix GPG Key: 7439106A Fingerprint: 5993 BE7A DA65 E2D9 06CE 5C36 75D2 3CED 7439 106A signature.asc Description: PGP signature
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
On Wed, Sep 04, 2013 at 03:30:24PM +0900, Xiao-Yong Jin wrote: On Sep 4, 2013, at 3:04 PM, Suvayu Ali fatkasuvayu+li...@gmail.com wrote: On Tue, Sep 03, 2013 at 11:34:52PM +0200, nore...@maillard.im wrote: Hello, I have a problem. I need to sync my files between several devices (currently 3). At first, I thought the solution would have been to use mobileorg (that made sense since I also use an android device) but as far as I understand it, it is not really designed for that purpose (I have several agendas.org staying in the hierarchy with conflicts from all sources...) How do you sync your files easily and share them between 3, 4 or even more places ? I use Git. You might try unison. Works for me. I think the issue with tools like Unison, Dropbox, is conflict resolution on simultaneous edits. Traditional version control does a better job of that, but then it loses the convenience of these other tools. I believe there is a list member (Alan) close to Unison development; in the thread referenced by Samuel there is some discussion on how this could be done in a more well defined manner. Hope this helps, -- Suvayu Open source is the future. It sets us free.
Re: [O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Hi, For me it is git using a central server. I push from the clients to the server and pull from the server only. Never on a device to device base, because most of the time the devices can't see each other (different networks). Hope that helps Torsten On 4 September 2013 09:43, Suvayu Ali fatkasuvayu+li...@gmail.com wrote: On Wed, Sep 04, 2013 at 03:30:24PM +0900, Xiao-Yong Jin wrote: On Sep 4, 2013, at 3:04 PM, Suvayu Ali fatkasuvayu+li...@gmail.com wrote: On Tue, Sep 03, 2013 at 11:34:52PM +0200, nore...@maillard.im wrote: Hello, I have a problem. I need to sync my files between several devices (currently 3). At first, I thought the solution would have been to use mobileorg (that made sense since I also use an android device) but as far as I understand it, it is not really designed for that purpose (I have several agendas.org staying in the hierarchy with conflicts from all sources...) How do you sync your files easily and share them between 3, 4 or even more places ? I use Git. You might try unison. Works for me. I think the issue with tools like Unison, Dropbox, is conflict resolution on simultaneous edits. Traditional version control does a better job of that, but then it loses the convenience of these other tools. I believe there is a list member (Alan) close to Unison development; in the thread referenced by Samuel there is some discussion on how this could be done in a more well defined manner. Hope this helps, -- Suvayu Open source is the future. It sets us free.
[O] [SYNC] How do you sync your org-mode files between n devices (n 2)
Hello, I have a problem. I need to sync my files between several devices (currently 3). At first, I thought the solution would have been to use mobileorg (that made sense since I also use an android device) but as far as I understand it, it is not really designed for that purpose (I have several agendas.org staying in the hierarchy with conflicts from all sources...) How do you sync your files easily and share them between 3, 4 or even more places ? Regards -- XMA