조직에 조직이 아닌 사용자와의 협업을위한 "역 엉킴"작업이 있습니까?


10

조직에서 자체 메모 / 테스트 / 코드를 작성한 다음 org-bable-tangle소스 파일을 생성 하는 데 사용하고 싶습니다 . 그러나 이러한 모든 파일은 버전 관리 대상이되므로 조직 환경 외부에서 변경 될 수 있습니다.

여러 src블록 을 가질 수 있고 여러 파일로 얽히고 싶습니다 . 각 파일은 버전 제어에 전념합니다. 그러나 동시에 버전 제어에서 변경 사항을 가져온 후 이러한 각 파일을 내 조직 파일로 다시 연결 해제 할 수 있습니다.

이 작업을 수행하는 간단한 방법이 있습니까? 나는 지금 노는 것을 고려하고있다insert-file-contents


당신이하고 싶은 일에 대한 작은 예를 들어 주시겠습니까? 하나 이상의 조직 파일에 코드 블록이 있고이 블록의 엉킴에서 생성 된 파일 또는 파일이 조직 파일의 변경 사항으로 원래 블록으로 분해되기를 원합니다.
David D.

기본적으로 워크 플로는 다음과 같습니다. (1) 조직에서 글을 읽고 쓸 줄 아는 코드를 작성하십시오. (2) 해당 코드를 하나 이상의 파일로 엉킴. (3) 자식 파일을 커밋하십시오. (4) 점심을 먹으십시오 (5) 자식이 내 동료의 변경 사항을 가져옵니다. (6) 이러한 변경 사항을 "역 엉킴"으로 변경하면 내 조직 파일의 코드 블록으로 다시 변경됩니다. (7) 고토 (1).
RJTK

답변:


6

예, org-babel-detangle입니다.

org-babel-detangle은의 대화 형 컴파일 된 Lisp 함수입니다 ob-tangle.el.

(org-babel-detangle &optional SOURCE-CODE-FILE)

원본 파일의 변경 사항을 원본 파일에서 조직 파일로 다시 전파합니다. 이를 위해서는 코드 블록에 링크 주석이 얽혀있어 원래 코드 블록을 찾을 수 있어야합니다.

예를 들어, comments헤더 인수가 link작동 하도록 설정해야합니다 .

#+begin_src ruby :tangle hello.rb :comments link
  puts 'hello'
#+end_src

그런 다음 M-x org-babel-tangle코드 블록을 내보내는 데 사용 하면 이름 hello.rb이 지정된 새 파일 이 만들어지며 다음과 같은 내용이 있어야합니다.

~ $ cat hello.rb
# [[file:~/foo.org][No heading:1]]
puts 'hello'
# No heading:1 ends here
~ $

마지막으로, 개방 hello.rb이맥스, 변화 hellohello world, 및 실행 M-x org-babel-detangle에서 hello.rb의 버퍼. 조직 파일이 업데이트됩니다

#+begin_src ruby :tangle hello.rb :comments link
  puts 'hello world'
#+end_src

이 org-babel-detangle 함수를 사용하는 방법에 대해 더 정확하거나 예를 들어 주시겠습니까? hello.rb에 엉키고 가볍게 코드를 수정 한 후 M x org-babel-detangle을 사용하기 위해 루비 코드로 시도했지만 "org-babel-detangle : 잘못된 유형 인수 : stringp, nil"오류가 발생했습니다.
Lgen

@Lgen 내 답변을 업데이트했습니다. 그리고 org-babel-detangle목적과 사용법을 이해하기 위해의 docstring 을 읽는 것을 잊지 마십시오 .
xuchunyang

이 설명에 감사드립니다. 역 엉킴을 허용하기 위해 소스 코드를 emacs 내에서 편집해야한다는 가정을 이해하지 못했습니다 (소스 코드를 수정하기 위해 다른 텍스트 편집기를 사용하고있었습니다). 이제 예상대로 작동합니다.
Lgen

이것은 좋은 기능이지만 내가 찾고 싶었던 것은 아닙니다. # [[...]] 의견은 저 자신 외에는 아무 의미가 없기 때문에 커밋 할 수 없습니다. 링크 설명없이 소스 블록에 주석을 달아 전체 파일에서 분리 할 수 ​​있습니까? 본질적으로 그냥 insert-file-contents?
RJTK

2

org-tanglesync 도 있습니다. 동기화 방법이 훨씬 간단합니다.org-babel-detangle

본질적으로 블록이 외부 파일에 얽힌 경우 해당 블록을 편집 할 때마다 외부 파일도 검사되며 diff가 감지되면 외부 변경 사항을 거부하거나 org src 블록으로 가져 오라는 메시지가 표시됩니다.

또한 버퍼의 모든 얽힌 블록을 자동으로 처리하는 기능이 있습니다. 도움이 되길 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.