first of all I'm new to org-mode and I'm new to that list. Please be
with me if I come up with the same silly ideas as hundreds of people before
I tried to check the archive and didn't find something similar.
I just came into this "org-mode"-topic and since I'm somehow a geek (as
many around here) my brain directly filled up with some
ideas and some "improvements". Since I have close to zero experience about
writing emacs-lisp code I thought to search for a companions to maybe
and hopefully realize some of the ideas.
The first thing which bothers me is the usage of links inside org-mode.
get me wrong, its by itself a really killer feature which I use more and
However, some of my org-files e.g. my daily laboratory book grow and grow
it becomes hard to remember which files I should better not move or which
I should better not delete since I might break a valuable link within the
Thus, first of all I thought I can maybe protect text-blocks within the
or within other org-files from being removed. Maybe I can build something
like a function check-valid-of-all-links, etc.
Later on I thought all the external links, buffers like gnus, irc, files on
disk,,,, are not save as well... how could I make sure that I never break
my org-file ???
Even worse I might not break up the link by deleting a file but by change
contents over time. Please think about the following situation:
I have something like
"... In the [graph] of the last results, a huge peak is observable due to
measurement problems for the following set-up parameters ...."
in my org-file and then several month later in a stupid act I overwrite
file by some very similar but different results, e.g. because I was not
aware of the link and thought there is no need to keep this old graph with
ugly peak and replace it by something "better".
Now the link still depicts to a graph (lets say without or smaller peak)
back in org-mode I might reread my entries check what I did several months
ago... and I will be very confused since the graph and the written text
some quirks (refer to a peak where no peak is depict in the graph and
to wrong measurement parameters) my boss ask me what sort of mess I did,
which I can not explain. He claims its the fault of all this "linux-hacker-
emacs-org-mode-work-only-on-text-files"-stuff blaims me to dead and force
switching back to use Outlook, MS Office and MS Windows for the rest of my
life..... wooohhh that would be a sad story !!!!
Since I'm a big fan of git, I think the beneficial and really tied
of emacs org-mode and git is a real benefit for everyone who uses org-mode.
one can create an easy way to let org-mode use a git repository, you can
always make sure that nothing breaks even if you delete, move or modify
For that task org-mode need to do know several features.
* it need to be aware of git and its commands (the user should not be
with fetches and pushes and commits...)
* the link command series needs a special link-type e.g. "freeze-link" to
not only to a file but also to the version of that file (could e.g. look
that [link]@). That means, if
something is linked within the org-file or to another file resp. buffer, a
and tag to git should be created automagically on-the-fly to freeze the
state of the file resp. buffer and if this link is selected, git should
temporary restore the old content and you will see the state of the file as
was when you created the link (properly with some infos that the content
changed, was removed, etc. in the mean time).
* to make sure that really any file can be linked and tracked, files should
copied inside a given git-repro (with a somehow unique name) if linked for
first time and a command should be available to detect (automatically)
on the original file and create commits to the git to be up-to-date with
external files. I know that's fare from being perfect, since you start to
with two files. But unlike you create a really huge git repro to store
everything in your home and work folders I can not see another way, how to
keep track of external files without touching the way how and where they
stored. A intermediate solution would be the following scheme.
Create a link will do: check if file is in git, if no, add file to git
rename it by name_md5hashsum.ext to make it unique for a flat git repro)
original file and create a symlink to the git aware file (probably just
This method centralise all org-mode-linked external files and put them
git and still keep a pointer at the original position. However, this
other drawbacks. If I reset my git repro back in time. The link will depict
an old version of the file as well. If go to copy that file at this moment,
let's say to send it by email, I would copy an old version.
As you can see this really needs some careful thinking how to do that,
* provide some more commands to use the benefits of this system (e,g, org-
fetch-file-from-server, org-update-ext-files, etc.)
This combination of git and org-mode provides some nice benefits.
First of all everything which org-mode is aware of is within a git-repro.
makes it highly portable. If you like to use your complete working
(your org-files and all linked files) on another computer a easy "git
will do the job never miss a file !!!!
For sure, a little script within emacs might make it easier as well, just
for the source address and destination and a few seconds to minutes later
you will find your complete org-mode work-environment on the other machine.
Secondly, a backup becomes very easy and can be performed by many different
E.g. A file server, possibly on the other side of the world, might just pop
periodically with a "git pull git://myworkmachine/org.git"
However, a local git clone to a usb-stick or even a copy of the complete
repro will work as well.
Finally, with combination of org-mode and git, people can not just track
actual notes and files but also the age resp. time and changes of there
This provides two methods. You can just conventionally (in the org-mode
manner) archive parts of your org-file because you might need to use it
and you like to have them close to you. Or you simply delete parts which
don't need anymore and you can be generous with this, since the info is not
lost and can be completely restored by git if necessary.
This keeps your org-file slime and still allows you to even grep infos
years old and deleted long time ago.
Thus you might like to delete all infos of an old (and finished) project
2 years later someone ask you to perform a similar task... don't worry it
all still there, just "move back in time" and check for it
Finally, it might even allow a sort of collaboration via net and email.
git one can send patches by e-mail and one can fetch (cherry pick) patches
over network. If someone creates an org-file "group-work.org" and teach
mode to create individual git commits for this special file. He can either
a patch to someone by e-mail and his colleague can apply this patch and see
what was changed in the file or the colleauge frequently cherry-pick
that file and will receive all the changes over the net. Again both methods
could be integrated in org-mode by a set of a few commands (e.g. org-team-
create, org-team-add-file, org-team-send, org-team-fetch, org-team-email,
I would be happy if you could tell me your opinion about this ideas. All of
these is just pop up of my mind and some points really need some sleep and
some good discussion and reconsideration ... thus it is a very very first
alpha-draft. I checked the web. Some people use git for there org-files (as
do). However, mostly we use org-mode and after things are done change to a
console (or use a git-mode in emacs) and fiddle around with git commands.
A good integration between both is still missing.
With best regards,
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.