emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [SYNC] How do you sync your org-mode files between n devices (n > 2)
@ 2013-09-03 21:34 noreply
  2013-09-04  6:04 ` Suvayu Ali
                   ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: noreply @ 2013-09-03 21:34 UTC (permalink / raw)
  To: emacs-orgmode

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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-03 21:34 [SYNC] How do you sync your org-mode files between n devices (n > 2) noreply
@ 2013-09-04  6:04 ` Suvayu Ali
  2013-09-04  6:30   ` Xiao-Yong Jin
  2013-09-04  6:21 ` Jambunathan K
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 21+ messages in thread
From: Suvayu Ali @ 2013-09-04  6:04 UTC (permalink / raw)
  To: emacs-orgmode

On Tue, Sep 03, 2013 at 11:34:52PM +0200, noreply@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.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-03 21:34 [SYNC] How do you sync your org-mode files between n devices (n > 2) noreply
  2013-09-04  6:04 ` Suvayu Ali
@ 2013-09-04  6:21 ` Jambunathan K
  2013-09-04  6:47 ` Paul Rudin
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 21+ messages in thread
From: Jambunathan K @ 2013-09-04  6:21 UTC (permalink / raw)
  To: noreply; +Cc: emacs-orgmode


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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-04  6:04 ` Suvayu Ali
@ 2013-09-04  6:30   ` Xiao-Yong Jin
  2013-09-04  7:43     ` Suvayu Ali
  0 siblings, 1 reply; 21+ messages in thread
From: Xiao-Yong Jin @ 2013-09-04  6:30 UTC (permalink / raw)
  To: emacs-orgmode@gnu.org


On Sep 4, 2013, at 3:04 PM, Suvayu Ali <fatkasuvayu+linux@gmail.com> wrote:

> On Tue, Sep 03, 2013 at 11:34:52PM +0200, noreply@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.
> 

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-03 21:34 [SYNC] How do you sync your org-mode files between n devices (n > 2) noreply
  2013-09-04  6:04 ` Suvayu Ali
  2013-09-04  6:21 ` Jambunathan K
@ 2013-09-04  6:47 ` Paul Rudin
  2013-09-04  6:50 ` Samuel Loury
  2013-09-05 20:00 ` Marc Ihm
  4 siblings, 0 replies; 21+ messages in thread
From: Paul Rudin @ 2013-09-04  6:47 UTC (permalink / raw)
  To: emacs-orgmode

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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-03 21:34 [SYNC] How do you sync your org-mode files between n devices (n > 2) noreply
                   ` (2 preceding siblings ...)
  2013-09-04  6:47 ` Paul Rudin
@ 2013-09-04  6:50 ` Samuel Loury
  2013-09-05 20:00 ` Marc Ihm
  4 siblings, 0 replies; 21+ messages in thread
From: Samuel Loury @ 2013-09-04  6:50 UTC (permalink / raw)
  To: noreply, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 392 bytes --]

Hi,

noreply@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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 489 bytes --]

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-04  6:30   ` Xiao-Yong Jin
@ 2013-09-04  7:43     ` Suvayu Ali
  2013-09-04  8:00       ` Torsten Wagner
  2013-09-05  8:50       ` Alan Schmitt
  0 siblings, 2 replies; 21+ messages in thread
From: Suvayu Ali @ 2013-09-04  7:43 UTC (permalink / raw)
  To: emacs-orgmode

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+linux@gmail.com> wrote:
> 
> > On Tue, Sep 03, 2013 at 11:34:52PM +0200, noreply@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.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-04  7:43     ` Suvayu Ali
@ 2013-09-04  8:00       ` Torsten Wagner
  2013-09-05  8:50       ` Alan Schmitt
  1 sibling, 0 replies; 21+ messages in thread
From: Torsten Wagner @ 2013-09-04  8:00 UTC (permalink / raw)
  To: Suvayu Ali; +Cc: Org Mode Mailing List

[-- Attachment #1: Type: text/plain, Size: 1668 bytes --]

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+linux@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+linux@gmail.com>
> wrote:
> >
> > > On Tue, Sep 03, 2013 at 11:34:52PM +0200, noreply@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.
>
>

[-- Attachment #2: Type: text/html, Size: 2530 bytes --]

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-04  7:43     ` Suvayu Ali
  2013-09-04  8:00       ` Torsten Wagner
@ 2013-09-05  8:50       ` Alan Schmitt
  2013-09-05  9:42         ` Suvayu Ali
  1 sibling, 1 reply; 21+ messages in thread
From: Alan Schmitt @ 2013-09-05  8:50 UTC (permalink / raw)
  To: Suvayu Ali; +Cc: emacs-orgmode

fatkasuvayu+linux@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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05  8:50       ` Alan Schmitt
@ 2013-09-05  9:42         ` Suvayu Ali
  2013-09-05 10:00           ` Alan Schmitt
  0 siblings, 1 reply; 21+ messages in thread
From: Suvayu Ali @ 2013-09-05  9:42 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode

Hi Alan,

On Thu, Sep 05, 2013 at 10:50:18AM +0200, Alan Schmitt wrote:
> fatkasuvayu+linux@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.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05  9:42         ` Suvayu Ali
@ 2013-09-05 10:00           ` Alan Schmitt
  2013-09-05 10:26             ` Karl Voit
                               ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: Alan Schmitt @ 2013-09-05 10:00 UTC (permalink / raw)
  To: Suvayu Ali; +Cc: emacs-orgmode

Hi,

fatkasuvayu+linux@gmail.com writes:

> Hi Alan,
>
> On Thu, Sep 05, 2013 at 10:50:18AM +0200, Alan Schmitt wrote:
>> fatkasuvayu+linux@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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 10:00           ` Alan Schmitt
@ 2013-09-05 10:26             ` Karl Voit
  2013-09-05 11:42               ` Jonas Hörsch
  2013-09-05 11:25             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Suvayu Ali
  2013-09-05 13:37             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Robert Horn
  2 siblings, 1 reply; 21+ messages in thread
From: Karl Voit @ 2013-09-05 10:26 UTC (permalink / raw)
  To: emacs-orgmode

* Alan Schmitt <alan.schmitt@polytechnique.org> wrote:
> Hi,

Hi,

> fatkasuvayu+linux@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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 10:00           ` Alan Schmitt
  2013-09-05 10:26             ` Karl Voit
@ 2013-09-05 11:25             ` Suvayu Ali
  2013-09-05 12:31               ` Alan Schmitt
  2013-09-05 13:37             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Robert Horn
  2 siblings, 1 reply; 21+ messages in thread
From: Suvayu Ali @ 2013-09-05 11:25 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode

On Thu, Sep 05, 2013 at 12:00:02PM +0200, Alan Schmitt wrote:
> Hi,
> 
> fatkasuvayu+linux@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.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 10:26             ` Karl Voit
@ 2013-09-05 11:42               ` Jonas Hörsch
  2013-09-05 13:03                 ` [SYNC] How do you sync your org-mode files between ndevices (n > 2)) Alan Schmitt
  0 siblings, 1 reply; 21+ messages in thread
From: Jonas Hörsch @ 2013-09-05 11:42 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

On Thu, Sep 05 2013, Karl Voit wrote:

> * Alan Schmitt <alan.schmitt@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

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 11:25             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Suvayu Ali
@ 2013-09-05 12:31               ` Alan Schmitt
  2013-09-05 12:54                 ` Suvayu Ali
  2013-09-05 16:14                 ` [SYNC] How do you sync your org-mode files between ndevices (n > 2)) Ramon Diaz-Uriarte
  0 siblings, 2 replies; 21+ messages in thread
From: Alan Schmitt @ 2013-09-05 12:31 UTC (permalink / raw)
  To: Suvayu Ali; +Cc: emacs-orgmode

fatkasuvayu+linux@gmail.com writes:

> On Thu, Sep 05, 2013 at 12:00:02PM +0200, Alan Schmitt wrote:
>> Hi,
>> 
>> fatkasuvayu+linux@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. 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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 12:31               ` Alan Schmitt
@ 2013-09-05 12:54                 ` Suvayu Ali
  2013-09-05 13:24                   ` Alan Schmitt
  2013-09-05 16:14                 ` [SYNC] How do you sync your org-mode files between ndevices (n > 2)) Ramon Diaz-Uriarte
  1 sibling, 1 reply; 21+ messages in thread
From: Suvayu Ali @ 2013-09-05 12:54 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode

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.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between ndevices (n > 2))
  2013-09-05 11:42               ` Jonas Hörsch
@ 2013-09-05 13:03                 ` Alan Schmitt
  0 siblings, 0 replies; 21+ messages in thread
From: Alan Schmitt @ 2013-09-05 13:03 UTC (permalink / raw)
  To: Jonas Hörsch; +Cc: emacs-orgmode

coroa@online.de writes:

> On Thu, Sep 05 2013, Karl Voit wrote:
>
>> * Alan Schmitt <alan.schmitt@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?

If someone is adventurous enough, the command to use org-merge-driver
with unison would be:

org-merge-driver -- CURRENTARCH CURRENT1 CURRENT2 NEW

(see my other mail for the rest of the details)

Alan

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 12:54                 ` Suvayu Ali
@ 2013-09-05 13:24                   ` Alan Schmitt
  0 siblings, 0 replies; 21+ messages in thread
From: Alan Schmitt @ 2013-09-05 13:24 UTC (permalink / raw)
  To: Suvayu Ali; +Cc: emacs-orgmode

fatkasuvayu+linux@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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-05 10:00           ` Alan Schmitt
  2013-09-05 10:26             ` Karl Voit
  2013-09-05 11:25             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Suvayu Ali
@ 2013-09-05 13:37             ` Robert Horn
  2 siblings, 0 replies; 21+ messages in thread
From: Robert Horn @ 2013-09-05 13:37 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode


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

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between ndevices (n > 2))
  2013-09-05 12:31               ` Alan Schmitt
  2013-09-05 12:54                 ` Suvayu Ali
@ 2013-09-05 16:14                 ` Ramon Diaz-Uriarte
  1 sibling, 0 replies; 21+ messages in thread
From: Ramon Diaz-Uriarte @ 2013-09-05 16:14 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode


alan.schmitt@polytechnique.org writes:

> fatkasuvayu+linux@gmail.com writes:
>
>> On Thu, Sep 05, 2013 at 12:00:02PM +0200, Alan Schmitt wrote:
>>> Hi,
>>> 
>>> fatkasuvayu+linux@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.
>


I find it very clear and helpful.  Thanks a lot!


R.


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


-- 
Ramon Diaz-Uriarte
Department of Biochemistry, Lab B-25
Facultad de Medicina 
Universidad Autónoma de Madrid 
Arzobispo Morcillo, 4
28029 Madrid
Spain

Phone: +34-91-497-2412

Email: rdiaz02@gmail.com
       ramon.diaz@iib.uam.es

http://ligarto.org/rdiaz

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [SYNC] How do you sync your org-mode files between n devices (n > 2)
  2013-09-03 21:34 [SYNC] How do you sync your org-mode files between n devices (n > 2) noreply
                   ` (3 preceding siblings ...)
  2013-09-04  6:50 ` Samuel Loury
@ 2013-09-05 20:00 ` Marc Ihm
  4 siblings, 0 replies; 21+ messages in thread
From: Marc Ihm @ 2013-09-05 20:00 UTC (permalink / raw)
  To: emacs-orgmode

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

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2013-09-05 20:00 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-03 21:34 [SYNC] How do you sync your org-mode files between n devices (n > 2) noreply
2013-09-04  6:04 ` Suvayu Ali
2013-09-04  6:30   ` Xiao-Yong Jin
2013-09-04  7:43     ` Suvayu Ali
2013-09-04  8:00       ` Torsten Wagner
2013-09-05  8:50       ` Alan Schmitt
2013-09-05  9:42         ` Suvayu Ali
2013-09-05 10:00           ` Alan Schmitt
2013-09-05 10:26             ` Karl Voit
2013-09-05 11:42               ` Jonas Hörsch
2013-09-05 13:03                 ` [SYNC] How do you sync your org-mode files between ndevices (n > 2)) Alan Schmitt
2013-09-05 11:25             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Suvayu Ali
2013-09-05 12:31               ` Alan Schmitt
2013-09-05 12:54                 ` Suvayu Ali
2013-09-05 13:24                   ` Alan Schmitt
2013-09-05 16:14                 ` [SYNC] How do you sync your org-mode files between ndevices (n > 2)) Ramon Diaz-Uriarte
2013-09-05 13:37             ` [SYNC] How do you sync your org-mode files between n devices (n > 2) Robert Horn
2013-09-04  6:21 ` Jambunathan K
2013-09-04  6:47 ` Paul Rudin
2013-09-04  6:50 ` Samuel Loury
2013-09-05 20:00 ` Marc Ihm

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).