이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 git-merge-changelog 명령입니다.
프로그램:
이름
git-merge-changelog - GNU ChangeLog 파일용 git 병합 드라이버
기술
'git'의 기본 병합 드라이버 항상 public을 가져올 때 충돌이 발생합니다.
개인적으로 수정된 ChangeLog 파일로 수정합니다. 이는 ChangeLog 파일이
항상 맨 위에서 수정됩니다. 기본 병합 드라이버는 처리 방법에 대한 단서가 없습니다.
이것. 또한 충돌에는 다음보다 더 많은 <<<< ==== >>>> 마커가 표시됩니다.
필요한; 이는 기본 병합 드라이버가
ChangeLog 항목 내의 개별 행 변경.
이 프로그램은 이러한 문제를 방지하는 'git' 병합 드라이버 역할을 합니다.
1. ChangeLog 항목이 양쪽 모두 상단에 삽입되었을 때 충돌을 일으키지 않습니다.
공개 및 비공개 수정. 그것은 위에 개인적으로 추가된 항목을 넣습니다
공개적으로 추가된 항목.
2. ChangeLog 파일의 구조를 존중합니다. 항목은 줄로 분할되지 않지만
함께 보관.
3. 또한 과거 ChangeLog 항목이 약간 수정된 경우 또는
제거된 변경 로그 항목: 예상대로 병합됩니다.
4. 충돌이 발생한 위치가 아니라 파일 상단에 충돌이 표시되므로
사용자가 즉시 볼 수 있습니다. (일부로 작성된 소스 코드와 달리
프로그래밍 언어, 수백 줄에 있는 충돌 마커
top은 구문 오류를 일으키지 않으므로 그대로 유지될 것입니다.
눈에 띄지 않게.)
럭셔리 자식 사용자 :
- 체크아웃의 .git/config(또는 $HOME/.gitconfig) 행에 추가
[병합 "변경 로그"]
name = GNU 스타일 ChangeLog 병합 드라이버
드라이버 = /usr/bin/git-merge-changelog %O %A %B
- ChangeLog 파일이 포함된 모든 디렉토리에 '.gitattributes' 파일을 추가합니다.
이 줄 :
변경 로그 병합 = 병합 변경 로그
(자세한 내용은 "man 5 gitattributes"를 참조하십시오.)
럭셔리 bzr 사용자 :
- 목록에 있는 'extmerge' bzr 플러그인을 설치합니다.
<http://doc.bazaar.canonical.com/plugins/en/index.html>
<http://wiki.bazaar.canonical.com/BzrPlugins>
- $HOME/.bazaar/bazaar.conf 라인에 추가
외부 병합 = git-merge-changelog %b %T %o
- 그런 다음 ChangeLog 파일에서 충돌을 병합하려면 다음을 사용하십시오.
$ bzr 확장 변경 로그
럭셔리 hg 사용자 :
- $HOME/.hgrc 행에 추가
[병합 패턴]
변경 로그 = git-merge-changelog
[병합 도구]
git-merge-changelog.executable = /usr/bin/git-merge-changelog
git-merge-changelog.args = $base $local $other
보다http://www.selenic.com/mercurial/hgrc.5.html> 섹션 병합 도구 참조.
as an 대안 에 '차이3':
git-merge-changelog는 재정렬된 인수를 사용하여 "diff3 -m"과 동일한 역할을 수행합니다.
$ git-병합-변경 로그 %O %A %B
~와 비슷하다
$ diff3 -m %A %O %B
호출 협약:
병합 드라이버는 세 가지 파일 이름 인수로 호출됩니다.
1. %O = %A와 %B의 공통 조상.
2. %A = "현재 분기"의 파일 내용.
3. %B = "다른 분기"의 파일 내용. 이것은 병합되는 내용입니다
인치
"git stash apply" 또는 업스트림 풀(예: 하위 시스템 유지 관리자에서
중앙 유지 관리자) 또는 --rebase를 사용한 다운스트림 풀:
2. %A = 파일의 가장 최근에 가져온 내용. 다른 커미터가 수정했습니다.
3. %B = 사용자의 최신 파일 사본. 사용자가 수정했습니다.
다운스트림 풀(예: 중앙 저장소에서 사용자로) 또는
--rebase를 사용한 업스트림 풀:
2. %A = 사용자의 최신 파일 사본. 사용자가 수정했습니다.
3. %B = 파일의 가장 최근에 가져온 내용. 다른 커미터가 수정했습니다.
병합된 출력을 파일 %A에 기록해야 합니다. 또한 stdout에 대한 몇 가지 설명을 반향할 수도 있습니다.
병합이 깔끔하게 해결되거나 0이 아닌 경우 반환 코드 XNUMX으로 종료되어야 합니다.
충돌이 있는 경우 코드를 반환합니다.
방법 it 작품 :
ChangeLog 파일의 구조: ChangeLog 항목으로 구성됩니다. 변경 로그 항목
빈 줄 다음에 오는 줄에서 시작하고 공백이 아닌 문자로 시작합니다.
또는 파일의 시작 부분에. 병합 드라이버는 다음과 같이 작동합니다.
파일을 메모리에 저장하고 ChangeLog 항목으로 분석합니다. 그런 다음 차이점을 찾습니다.
%O와 %B 사이. 다음과 같이 분류됩니다.
- 제거(일부 연속 항목 제거),
- 변경 사항(일부 연속 항목 제거, 일부 연속 항목 추가),
- 추가(일부 연속 항목 추가).
그런 다음 드라이버는 %A에 변경 사항을 적용하려고 시도합니다. 이를 위해 먼저 계산합니다.
퍼지 문자열을 사용하여 %O의 항목과 %A의 항목 간의 일치
변경된 항목을 식별하기 위해 일치합니다.
- 제거는 하나씩 적용됩니다. 항목이 %A에 있으면 임의의 위치에 있습니다.
제거됨. 그렇지 않은 경우 제거가 충돌로 표시됩니다.
- %B 상단의 덧셈은 %A 상단에 적용됩니다.
- %B의 항목 x와 항목 y(y는 파일 끝일 수 있음) 사이의 추가 사항이 적용됩니다.
%A의 x 항목과 y 항목 사이(여전히 존재하고 계속 연속되는 경우
%A), 그렇지 않으면 추가가 충돌로 표시됩니다.
- 변경 사항은 "단순 변경 사항"으로 분류됩니다.
entry1 ... entryn은 다음에 매핑됩니다.
added_entry ... added_entry modified_entry1 ... modify_entryn, 여기서
entry_i와 modify_entry_i 사이의 대응은 여전히 명확합니다. 그리고 "큰 변화":
이것들이 모두 나머지입니다. %B 상단의 간단한 변경 사항은
%A 상단에 항목을 추가했습니다. 단순 변경의 변경 사항은 하나씩 적용됩니다.
단일 항목 충돌로 이어질 수 있습니다. 큰 변경 사항은 일괄적으로 적용됩니다.
여러 항목에 걸친 충돌로 이어집니다.
- 충돌은 파일의 맨 위에 출력되고 종료 상태는 1입니다.
onworks.net 서비스를 사용하여 온라인에서 git-merge-changelog 사용