파이프를 손상시키지 않고 현재 tee가 작성한 파일을 안전하게 git/commit/push 또는 rsync할 수 있습니까?

파이프를 손상시키지 않고 현재 tee가 작성한 파일을 안전하게 git/commit/push 또는 rsync할 수 있습니까?

나는 며칠 동안 작동하는 파이프라인을 가지고 있었고 매우 느린 속도로 일부 과학적 결과를 작성했습니다(한 시간에 한 번 약 20줄씩). 대부분의 경우 아무것도 작성되지 않았습니다. 이 문서는 에 의해 작성되었습니다 tee.

나는 프로세스를 방해하지 않고 매일 새로운 결과를 얻고 싶습니다. 파이프라인을 중단하고 싶지는 않습니다.

이 파일로 개인 저장소를 만들어 파일(현재 작성 중)을 제출하여 휴대폰이나 다른 장치에서 새 결과를 볼 수 있습니까?

커밋하고 푸시하면 어떤 방식으로든 파이프라인이 손상되나요?

편집하다: 새로운 결과를 검토하기 위해 제가 할 수 있거나 (휴대폰으로) 제출할 rsync수 있는 다른 아이디어가 있나요?scp

답변1

Git은 파일을 읽는 것 외에는 아무것도 하지 않습니다. 이렇게 하면 파이프가 손상되지 않습니다. 읽기 전용 디렉터리에 대한 git 저장소를 만들고 읽기 전용 파일을 커밋할 수도 있습니다. 작업 디렉터리를 확인하거나 수정하는 작업을 수행하지 않고 작업 디렉터리를 확인하거나 수정하기 위한 작업만 수행하지 않고 추가 및 커밋만 수행하는 한 Git에서 쓰기 작업을 수행해야 하는 유일한 위치는 Git 디렉터리 내부입니다( .git기본적으로 다른 곳에 둘 수 있음) git --git-dir=….

정말 걱정된다면 Git 소스 코드를 보면 이를 확인할 수 있습니다. 또는 git이 파일을 커밋하는 방법을 살펴보면...

strace -o commit.strace -f git commit -m wibble foo

보고 전화 만 lstat하면 됩니다 .open(…, O_RDONLY)foo

실패할 수 있는 것은 git add행동이다. Git이 파일을 읽는 동안 프로세스가 파일에 쓰는 경우 Git은 파일이 변경되었음을 알아차리고 포기할 수 있습니다. 어떤 경우에도 이것은 소스 파일에 영향을 미치지 않습니다. git add myfile실패하면 아무 것도 하지 않아야 합니다. 그러나 Git에 어떤 종류의 오류가 있고 올바르게 복구할 수 없는 경우에도 Git 인덱스에만 영향을 미치고 파일에는 영향을 미치지 않습니다. Git이 처리한 데이터 파일은 읽기 전용으로 열립니다. 오류 메시지는 다음과 같습니다."불안정한 개체 소스 데이터로 인해 혼란스러워요", 그러나 아직 확인하지 않았습니다. 먼저 트리거되는 크기에 대한 다른 확인이 있을 수 있습니다. 데이터 속도를 고려하여 git add실패하면 잠시 멈추고 다시 시도하십시오.

관련 정보