~에서디퓨틸 매뉴얼
다음은 하나 이상의 차이점입니다. 각 블록은 서로 다른 파일 영역을 보여줍니다. 균일하게 잘 생긴 남자는 다음과 같습니다.
@@ from-file-line-numbers to-file-line-numbers @@ line-from-either-file line-from-either-file...
청크에 한 줄만 포함된 경우, 시작 줄 번호만 표시됩니다. 그렇지 않으면줄 번호는 "start, count"와 같습니다. 빈 블록은 블록 뒤의 줄부터 시작하는 것으로 간주됩니다.
블록과 해당 컨텍스트에 두 개 이상의 줄이 포함된 경우, 줄 번호는 "start,count"와 같습니다.그렇지 않으면끝 줄 번호만 표시됩니다. 빈 블록은 블록 앞 줄에서 끝나는 것으로 간주됩니다.
무슨 뜻인가요? 또한 그 의미에 대한 몇 가지 예를 들어주실 수 있나요?
특히, 마지막 두 문단의 상황의 차이를 알 수 없습니다. 그들은 같은 사건에 대해 이야기하고 있는 것 같지만, 나는 그렇지 않다고 생각합니다.
첫 번째 문단의 "if" 경우와 두 번째 문단의 "else" 경우의 차이점은 무엇인가요?
첫 번째 문단의 "else" 경우와 두 번째 문단의 "if" 경우의 차이점은 무엇인가요?
답변1
나는 (당신이 강조한 두 개 중) 첫 번째 문단이 설명하려고 하는 from-file-line-numbers
반면, 두 번째 문단은 설명하려고 하는 것 같아요 to-file-line-numbers
.
모호한 텍스트는 무시하고 GNU가 diff
통합을 구현하는 방법 diff
(문제를 해결하는 제목)을 설명하겠습니다.
diff -u <(printf "a\nb\nc\n") <(printf "a\n")
다음과 같은 결과가 생성됩니다.
--- /proc/self/fd/11 2018-11-08 11:16:09.183611033 +0100
+++ /proc/self/fd/12 2018-11-08 11:16:09.184611029 +0100
@@ -1,3 +1 @@
a
-b
-c
(이후 예제에서는 많은 설명이 필요하지 않기 때문에 처음 두 줄을 생략하겠습니다.)
이는 두 개의 "파일"이 서로 다르며 단 하나의 차이점 세트("청크")만 있음을 보여줍니다. 유니티 패치에서 각 파일 비교는 ---
("from" file)과 ("to" file)로 +++
시작하는 한 쌍의 줄로 소개 됩니다. 각 파일 비교에서 각 블록은 line으로 시작하고 끝나는 줄로 시작됩니다 @@
. 이 줄은 소스 및 대상 파일의 변경 위치를 식별합니다. 시작 위치는 -
(다음 숫자의 일부가 아님)으로 시작하고 끝 위치는 로 시작됩니다 +
. 위치는 시작선과 길이(1인 경우 생략)의 숫자 쌍입니다. 그래서 위 패치에서는 from 파일의 1번째 줄에서 시작하는 세 줄을 to 파일의 1번째 줄에서 시작하는 한 줄로 변환하는 변경을 했습니다.
잘생긴 남자는 맥락을 담을 수 있는데, 위의 경우가 그렇습니다. 기본적으로 diff
세 줄의 컨텍스트가 포함됩니다(있는 경우). 또한 겹치는 컨텍스트가 있는 덩어리도 병합합니다. 변경 전 및/또는 변경 후에 세 줄의 컨텍스트가 없으면 컨텍스트가 줄어듭니다. 따라서 위에서는 변경 전에는 한 줄의 컨텍스트만 있고 변경 후에는 없습니다. 이 컨텍스트는 블록에 제공된 변경 사항의 일부로 간주되므로 출발선과 길이에 영향을 줍니다.
diff -u0 <(printf "a\nb\nc\n") <(printf "a\n")
이 점을 설명합니다.
@@ -2,2 +1,0 @@
-b
-c
동일한 변경이지만 컨텍스트가 없습니다. 따라서 행 2에서 시작하는 두 행에서 행 1에서 시작하는 행이 없는 변경으로 축소됩니다.
가장 간단한 위치는 컨텍스트 없이 한 줄을 변경하는 패치에 해당합니다.
$ diff -u0 <(printf "a\nb\nc\n") <(printf "a\nb\nd\n")
@@ -3 +3 @@
-c
+d
문맥에 따라서는 이렇습니다.
@@ -1,3 +1,3 @@
a
b
-c
+d
(컨텍스트의 유용성은 원본 파일과 정확하게 일치하지 않는 "from" 파일에 대해 패치가 여전히 유용할 수 있도록 하는 것입니다. patch
행 번호가 정확히 일치하지 않는 곳에 "흐릿한" 패치를 적용하는 경우, 원작과의 거리가 멀다.)