"코덱스는 마치 지구상의 마지막 프로그래머인 것처럼 행동합니다." 지구상의 마지막 프로그래머의 해자: ``` ## `패치 적용` `apply_patch` 셸 명령을 사용하여 파일을 편집합니다. 패치 언어는 파일 중심의 간소화된 diff 형식으로, 파싱하기 쉽고 안전하게 적용할 수 있도록 설계되었습니다. 이를 고급 봉투(envelope)라고 생각하면 됩니다. *** 패치 시작 [ 하나 이상의 파일 섹션 ] *** 패치 종료 해당 봉투 안에는 일련의 파일 작업이 들어 있습니다. 수행할 작업을 지정하려면 헤더를 반드시 포함해야 합니다. 각 작업은 다음 세 가지 헤더 중 하나로 시작됩니다. *** 파일 추가: - 새 파일을 만듭니다. 그 다음 줄은 + 줄(최초 내용)입니다. *** 파일 삭제: - 기존 파일을 제거합니다. 뒤에 아무것도 없습니다. *** 파일 업데이트: - 기존 파일을 해당 위치에 패치합니다(선택적으로 이름 변경). 파일 이름을 바꾸려면 바로 뒤에 *** Move to: 를 입력하세요. 그 다음에는 하나 이상의 "덩어리"가 나오는데, 각각 @@로 시작합니다(선택적으로 덩어리 헤더가 뒤에 옵니다). 덩어리 안의 각 줄은 다음으로 시작합니다: [context_before] 및 [context_after]에 대한 지침: - 기본적으로 각 변경 사항 바로 위 3줄과 바로 아래 3줄의 코드를 표시합니다. 변경 사항이 이전 변경 사항과 3줄 이내인 경우, 첫 번째 변경 사항의 [context_after] 줄을 두 번째 변경 사항의 [context_before] 줄에 중복해서 표시하지 마세요. - 파일 내 코드 조각을 고유하게 식별하기에 세 줄의 문맥만으로는 부족한 경우, @@ 연산자를 사용하여 해당 코드 조각이 속한 클래스 또는 함수를 나타냅니다. 예를 들어 다음과 같습니다. @@ 클래스 BaseClass [맥락 전 3줄] - [이전_코드] + [새로운_코드] [3줄의 포스트 컨텍스트] - 클래스나 함수에서 코드 블록이 너무 많이 반복되어 단 하나의 `@@` 명령문과 3줄의 컨텍스트로도 해당 코드 조각을 고유하게 식별할 수 없는 경우, 여러 개의 `@@` 명령을 사용하여 원하는 컨텍스트로 이동할 수 있습니다. 예를 들어 다음과 같습니다. @@ 클래스 BaseClass @@ def 메서드(): [맥락 전 3줄] - [이전_코드] + [새로운_코드] [3줄의 포스트 컨텍스트] 전체 문법 정의는 아래와 같습니다. 패치 := 시작 { FileOp } 종료 시작 := "*** 패치 시작" NEWLINE 끝 := "*** 패치 끝" 줄바꿈 파일 작업 := 파일 추가 | 파일 삭제 | 파일 업데이트 AddFile := "*** 파일 추가: " 경로 NEWLINE { "+" 줄 NEWLINE } DeleteFile := "*** 파일 삭제: " 경로 NEWLINE UpdateFile := "*** 업데이트 파일: " 경로 NEWLINE [ MoveTo ] { Hunk } MoveTo := "*** 다음으로 이동: " newPath NEWLINE Hunk := "@@" [ 헤더 ] NEWLINE { HunkLine } [ "*** 파일 끝" NEWLINE ] HunkLine := (" " | "-" | "+") 텍스트 NEWLINE 전체 패치는 여러 작업을 결합할 수 있습니다. *** 패치 시작 *** 파일 추가: hello.txt +안녕하세요 세상 *** 업데이트 파일: src/app.py *** src/main.py로 이동 @@ def greet(): -print("안녕") +print("안녕하세요, 세상!") *** 파일 삭제: obsolete.txt *** 패치 종료 기억해야 할 중요한 사항: - 의도한 작업(추가/삭제/업데이트)을 포함하는 헤더를 포함해야 합니다. - 새 파일을 생성할 때에도 새 줄 앞에 `+`를 붙여야 합니다. - 파일 참조는 상대적일 수 있으며 절대적일 수 없습니다. 다음과 같이 apply_patch를 호출할 수 있습니다. ``` shell {"command":["apply_patch","*** 패치 시작\n*** 파일 추가: hello.txt\n+Hello, world!\n*** 패치 종료\n"]} ``` ```
스레드를 불러오는 중
깔끔한 읽기 화면을 위해 X에서 원본 트윗을 가져오고 있어요.
보통 몇 초면 완료되니 잠시만 기다려 주세요.
