Emacs에서 비코 더 작성에 적합한 단순화 된 버전 제어 시스템이 있습니까?


28

나는 학업을하며 이맥스에서 가능한 한 많이 글을 쓰기를 좋아합니다. 나에게 없어진 핵심은 시간이 지남에 따라 텍스트 파일의 변경 사항을 쉽게 검토 할 수 있다는 것입니다.

Wikipedia 기사 또는 Google 문서의 추적 기능은 모두 내가 찾고있는 라인을 따라 있습니다. 나는 Emacs가 잘 지원하는 것처럼 보이기 때문에 git과 같은 버전 제어 시스템을 가지고 놀았지만 사용하기가 어렵고 필요한 것보다 훨씬 복잡했습니다. 리포지토리 등록, 체크인 및 체크 아웃은 모두 귀찮았습니다.

내가 찾고있는 기능을 비교적 사용자 친화적 인 방식으로 제공하는 패키지가 있다고 생각하지 않습니까?


3
내가 사용하는 것이 좋습니다 gitmagit- github.com/magit/magit을 - 당신은 이미 그것으로 약간의 비트 주위를 해본 적이 있기 때문이다. 명령 행 옵션에 익숙해 져서 magit수행중인 작업을 더 잘 이해할 수 있습니다 . Emacs는 코더 가 아닌 사람을 위한 것이 아니라 당신이 그것을 두려워하지 않을 정도로 오랫동안 장면을 둘러 본 적이 있습니다. :) gist: github.com/defunkt/gist.el
lawlist

기술적 vc-으로 명령 그룹의 목표는 VCS 사용 프로세스를 단순화하는 것입니다. 불행히도 경험이없는 사용자가 자신을 잘 활용할 수 있도록하는 것만 큼 직관적이지 않습니다. 반면에 언급 한 것과 같은 시스템은 매우 제한적이므로 충족 할 수없는 요구 사항을 신속하게 개발할 수 있습니다. gnu.org/software/emacs/manual/html_node/emacs/… 백업을 유지하는 간단한 메커니즘이 있지만 위의 이유로 일부 VCS를 사용하는 방법을 배우는 것이 좋습니다.
wvxvw

6
나는 또한 학계이며 논문의 버전 관리를 위해 git/ magit를 사용하기 시작했습니다 . 시작하는 것은 위협적인 것처럼 보이지만 a) 한 번에 모두 배울 필요는 없으며 b) 초기 학습 곡선을 벗어난 후에도 즐겁게 사용할 수 있습니다. 좋은 워크 플로우는 또한 작문 과제를 훈련시키는 데 도움이됩니다. 작문 과제에 주석을 달도록 권장하기 때문에 작문 프로젝트의 발전에 대한 타임 라인을 확보 할 수 있습니다.
Dan

어떤 운영 체제를 사용하고 있습니까? 나는 수년 동안 RCS를 사용했고 이전에는 SCCS를 사용했지만 더 이상 OS와 번들로 제공되지 않았으며 최근에는 git로 전환하여 서브 버전에 대한 논문이있었습니다. git의 체크인 프로세스는 RCS와 비교하여 하나의 추가 단계가 있지만 여러 상황에서 파일 세트를 함께 체크인하는 것이 매우 유용합니다.
앤드류 스완

이것은 내 마음에 있었고, 자동 커밋은 이야기의 일부가 될 수 있습니다 : 각 저장 프로젝트
.ryuslash.org /

답변:


43

기존 버전 제어 시스템의 문제점은 그다지 복잡하지 않습니다. 초보자가 나무의 숲을 보는 것이 매우 어려울 수 있다는 정보가 풍부하다는 사실입니다. ).

이 포스트는에 초점을 맞추고 git라는 애드온 패키지를 사용하여 Emacs에서이를 제어하는 ​​방법을 설명합니다 magit. , git복잡하지만 설명하는 목적으로 생산적으로 사용하기 위해 많은 것을 배울 필요는 없습니다.

나는 당신이 git설치하고 (그렇지 않으면 여기로 가져 오십시오 ), Emacs를 떠나고 싶지 않다고 가정합니다.


설치 magit

magitgitEmacs 의 프론트 엔드입니다. MELPA 에서 구할 수 있으며 다음을 통해 설치할 수 있습니다.

M-x package-install RET magit RET

구성에서 MELPA를 사용하도록 설정하지 않은 경우 여기 에서이를 수행하는 방법에 대한 지시 사항을 찾을 수 있습니다 .

리포지토리 설정

~/writing버전 관리하에 하나 이상의 문서가 들어있는 홈 디렉토리에 폴더가 있다고 가정 해 봅시다 .

  1. Dired에서 폴더를 엽니 다. C-x d ~/writing RET
  2. 쉘을여십시오 : M-x shell RET
  3. 를 입력 git init하고 누르십시오 RET.

그게 다야. 이제 git저장소가 있습니다. 어디서나 "등록"할 필요가 없습니다. gitA는 분산 버전 관리 시스템; 변경 사항을 추적하기 위해 원격 서버가 필요하지 않습니다.

리포지토리 상태 확인

  1. 저장소의 파일을 나열하는 Dired 버퍼로 다시 전환하십시오.
  2. 마십시오 M-x magit-status RET.

리포지토리 작업을위한 "제어판"으로 나타나는 버퍼를 생각할 수 있습니다. 새로운 저장소의 경우 다음과 같습니다.

새로 작성된 저장소의 Magit 상태 버퍼

  • n( magit-goto-next-section) 및 p( magit-goto-previous-section)를 사용하여이 버퍼의 다른 섹션을 탐색 할 수 있습니다 .

  • g( magit-refresh) 를 눌러 버퍼를 새로 고칠 수 있습니다 .

이전에 설정 한 저장소에 속하는 파일 또는 디렉토리에서 상태 버퍼를 가져올 수 있습니다.

파일 추가

스크린 샷에서 볼 수 있듯이 git현재 추적하지 않는 세 개의 파일이 저장소에 있습니다. git파일 추적을 시작 하려면 파일을 준비 해야합니다 s. 추가하려는 파일을 가리키고를 누릅니다 . 상태 버퍼는 다음과 같습니다.

file-1.txt를 추가 한 후 Magit 상태 버퍼

커밋

하나 이상의 파일을 준비한 후을 눌러 파일을 커밋 할 수 있습니다 c c. 그러면 다음과 같은 버퍼가 나타납니다.

커밋 메시지를 입력하기위한 Magit 버퍼

커밋 메시지를 맨 위에 입력 한 다음을 눌러 C-c C-c커밋을 완료하십시오. 중단하려면을 누릅니다 C-c C-k.

상태 버퍼는 다음과 같습니다.

첫 커밋 후 Magit 상태 버퍼

준비 변경

추적 된 파일을 변경하면 상태 버퍼의 별도 섹션 ( "무단계 변경")에 나열됩니다.

비 단계적 변경 (축소)

파일의 변경 사항을 검토하려면 해당 행으로 이동 한 Modified file-1.txtTAB다음을 누르십시오 .

비 단계적 변경 (확장)

이러한 변경 사항을 준비하려면 다음을 누르십시오 s.

추적 된 파일에 변경 사항을 스테이징 한 후 Magit 상태 버퍼

과거 커밋보기

마지막으로 과거 커밋을 검토하려면을 누르십시오 l l(소문자 L이 두 개임).

Magit 로그 버퍼

평소와 같이, 당신은 함께 제공되는 버퍼 탐색 할 수 있습니다 np. Magit은이 버퍼에 나열된 개별 커밋과 관련된 변경 사항을 별도의 창에 표시합니다.

개요

껍질에서 :

  • git init: git현재 디렉토리에서 저장소 초기화

git저장소 와 연관된 파일 또는 디렉토리에서 :

  • M-x magit-status RET

상태 버퍼에서 :

  • s 새 파일을 추가하거나 변경 사항을 스테이지

  • c c 단계적 변화를 저지르기 위해

    • C-c C-c 커밋을 마무리하기 위해
    • C-c C-k 커밋을 중단하다
  • l l 커밋 로그를 보려면

그게 다야. :)


7
git init쉘에서 필요하지 않습니다 . M-x magit-statusgit 저장소 외부의 어딘가에 전화하면 하나를 설정할 수 있습니다. (그러나 설정을 마친 후 상태 버퍼를 불러 오려면 다시 호출해야합니다).
wvxvw

당신은 나에게 또 다른 시도 버전 관리를 할 가치가 있다고 확신했고, 이것은 유용한 가이드가 될 것입니다. 감사!
Brian Z

1
지금까지는 좋지만 하나의 좌절감은 긴 단락에서 몇 단어를 변경하면 전체 단락이 단계적 변경으로 강조 표시됩니다. 나는 한 줄씩 바꾸는 것이 아니라 한 단어 씩 바꾸는 것을 정말로보고 싶다.
브라이언 Z

3
@BrianZ 변수 magit-diff-refine-hunk를 사용자 정의하여 원하는 동작을 얻을 수 있습니다 . (setq magit-diff-refine-hunk t) 또는 (setq magit-diff-refine-hunk 'all) init 파일에 추가 하십시오. C-h v magit-diff-refine-hunk RET다른 설정의 의미에 대한 자세한 정보를 얻을 수 있습니다 .
itsjeyd

원하는 것에 더 가까워 지려면 magit-diff-refine-hunk 설정을 실험해야합니다. 기본 설정은 코드 변경 사항을 추적하는 데 유용하지만 전문가의 변경 사항을 추적하려고 할 때 반드시 빛나는 것은 아닙니다. 당신이 그것을 올바르게 얻기 전에 약간의 시간이 걸릴 수 있지만, 가능해야하며 일단 당신이 다시는 돌아 가지 않을 것이라고 생각합니다!
팀 X

11

뿐만 아니라 magit(itsjeyd의 대답은 훌륭하게 보여줍니다 @로), 당신은 또한 시도 할 수 있습니다 git-timemachine에서 이전 버전의 파일을 빠른 자전거에 대한 기능을 제공하는 git버전 관리. github 페이지에 따르면 다음과 같은 기본 키 바인딩을 통해 수행 할 수있는 작업을 알 수 있습니다.

  • p 이전 기록 버전 방문
  • n 다음 역사적인 버전 방문
  • w 현재 이전 버전의 약식 해시 복사
  • W 현재 이전 버전의 전체 해시 복사
  • q 타임머신을 종료하십시오.

8

나는 당신이 찾을 수 의심 백업 모드 및 / 또는 백업 워커 매우 흥미로운합니다.

둘 다 Emacs의 기존 백업 메커니즘을 활용하고 추가 VCS를 요구하지 않고 파일 히스토리에 대한 더 나은 액세스 및 가시성을 제공하는 것을 목표로합니다.


6

앞에서 언급했듯이 파일의 다른 버전을 사용하는 간단한 방법은 Emacs 백업 시스템입니다.

(setq backup-directory-alist '(("." . "~/emacs-backups"))
      version-control 'numbered
      make-backup-files t
      delete-old-versions 'never)

번호가 지정된 백업에 전용 디렉토리를 사용하며 자동으로 삭제되지는 않습니다. 그러면 C-u C-x C-s언제든지 다른 버전을 만들 수 있습니다 .

비록이 버전을 비교하기위한 인터페이스를 사용할 준비가 쉽지 않다고 생각합니다. 따라서 하나 또는 두 개의 백업을 수동으로 열고 백업 ediff-buffers및 / 또는 원래 버퍼에서 사용해야 합니다.


1
예를 들어 gnu.org/software/emacs/manual/html_node/emacs/… 를 사용하여 백업을 비교할 수 있습니다 (하나의 파일을 다른 파일로 m이동 지점으로 표시 하고을 누름 =).
wvxvw

2
이것은 이론적으로 매력적인 옵션처럼 보였지만 무작위 백업으로 가득 찬 압도적 인 폴더를 제공합니다. 내가 관심있는 버전은 완전히 묻혀 있습니다. 파일의 번호가 지정된 백업을 수동으로 트리거하는 방법이 있지만 원하는 경우에만 가능합니까? 어떻게 든 간단한 "커밋 메시지"를 해당 백업에 첨부 할 수 있다면 매우 좋은 해결책이 될 것입니다. 그러나 지금은, 나는 magit을 배우는 것을 고수하고 있다고 생각합니다 :)
Brian Z

2

아직이 솔루션을 사용할 기회가 없었지만 Cory Doctorow와 Thomas Gideon의 플래시 베이크도 고려해 볼 수 있습니다. Doctorow가 이에 대해 말한 내용은 다음과 같습니다 .

컴퓨터 시대 이전에 작가들이 출판으로가는 길에 대한 일련의 완전한 초안을 작성하고 소거, 주석 등으로 ​​완성했다는 불만을 제기 한 몇몇 디지털 기록 보관소와 논의한 후에이 작업을 수행하라는 메시지가 표시되었습니다. 이들은 우리가 관심을 갖는 책 뒤에 숨겨진 이야기를 종종 드러내는 방식으로 창의적인 과정을 밝히기 때문에 보관 금입니다. 대조적으로, 많은 작가들은 첫 번째 작곡과 최종 초안 사이의 중간 상태에 대한 실제 체계적인 기록없이 출판 시간까지 수정 된 하나의 디지털 파일 만 생성합니다.

Flashbake를 시작하십시오. 15 분마다 Flashbake는 사용자가 확인하도록 요청한 모든 파일을 확인합니다 (내가 진행중인 소설, 할 일 목록, 유용한 정보가 담긴 파일 및 최근에 완성 된 전자 버전의 전자 책을보고 있습니다. )를 확인하고 시스템 시계의 현재 시간대, Google에서 가져온 시간대의 날씨 및 블로그의 RSS 아래에 제목과 함께 마지막 3 개의 헤드 라인으로 주석을 달고 마지막 확인 이후의 모든 변경 사항을 기록합니다. 피드 (저는 이것을“어디에 있고, 어떤 것이 있으며, 무엇에 대해 생각하고 있습니까?”라고 특성화했습니다). 또한 컴퓨터의 가동 시간을 기록합니다. 향후 버전에서는 음악 플레이어가 가장 최근에 3 곡을 연주하는 것이 재미있을 것 같습니다.

그 존재는 내가 쓰기 결국 때문에, 그것을 테스트 할 수있는 기회가 없었 말했다 많은 음 ... 나는 종류의 더 나은 사용에있어 ... 조직 모드에 물건을, 그리고 많은 프로그래밍되었으며, magit, 그리고 결국, 나는 단지 ... 그것을 사용할 필요가 없었습니다.

어쨌든이 솔루션은 비 기술적 프로젝트를 수행하는 작가를 대상 으로합니다. 요구 사항에 맞을 수도 있습니다.


1

완전히 관련이 없지만 emacs텍스트 파일을 Dropbox에 저장할 수 있으며 프로 사용자 인 경우 확장 버전 기록을 사용할 수 있습니다 . (암호화를 원한다면 SparkleShare 를 볼 수 있습니다 .)

그런 다음 약간 자동화 된 플래시 베이크 가 있습니다 (자습서가 있습니다 ).

또한 다른 곳 에서도 질문을 받았 으므로 대답이 유용 할 수 있습니다.


플래시 베이크는 매우 유망 해 보입니다. 나는 그것을 시도 할 것입니다.
브라이언 Z

-1

Dropbox를 사용할 수 있습니다. Cx Cs를 누를 때마다 파일의 수정 가능한 버전이 만들어집니다. 내 텍스트 파일의 암호화를 위해 GNU Privacy Guard를 사용하며 Emacs에서 지원합니다.

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