Skip to content

Bothway Sync between modifyed tangled file and org file in common programming workflow  #144

@reyman

Description

@reyman

Hi

This is more a discussion than a question.

I suppose this is a common use case in dev team where people have different habits : multiple tools, multiple workflow, multiple os.

I'm very interested to develop Literate Programing in my works but i found this is very difficult to impose this LP habits to other people working with me.

For example, if i wrote (me/reyman) a software in python using powerfull org-mode, org-transclusion, i generate a myprogram.org document that weave/tangle in myprogram.py and myprogram.md before executing.


The function A need B to do the right thing correctly bla bla bla ...

#+NAME functionA
#+BEGIN_SRC python :tangle modules.py 
def myfunctionA():
    <<functionB>>
    ...
#+END_SRC

The function B order thing using a state of the art algorithm in machine learning bla bla bla ...

#+NAME functionB :tangle modules.py
#+BEGIN_SRC python
def myfunctionB():
    ... do something ...
#+END_SRC

Finally the program run this two very important function like this ... bla bla ...

#+NAME functionB
#+BEGIN_SRC python :tangle main.py
from module import *

def main():
   var result = myfunctionA()
#+END_SRC

My friends use directly myprogram.py file because like 90% of programmers they don't want LP in their workflow, and they use an IDE that don't understand anything about org file. So they directly modify the result tangled file.

So even with very small refactoring, if they decide to change the name of myfunctionA to myfunctionA1 or ... rename the source file that contain the function A and B to modulexx.py, my org file will be automatically broken and not in sync with these modification.

I think one way to limit interference will be to integrate unique uuid as code comment for each chunk during tangling of file, so even with little modification (like moving or renamming file) the uuid follow and it will be possible to re-sync the content after my friend modification.

Or, probably this is most complicated, and perhaps the only way to do that will be to use syncweb (https://github.com/aryx/syncweb) software ? I didn't found integration for this tool with org, do you know something about that ?

Do you think this is a discussion i need to move to org mailling liste ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions