저는 중앙 svn 저장소에서 작동하기 위해 windows에서 msysgit 자식을 사용하고 있습니다. 나는 자식을 으로 사용하고있다. 나는 모든 것을위한 훌륭한 로컬 브랜치를 갖고 싶고, 서로 리베이스한다.msysgit git-am은 자체의 git 형식 - 패치 시퀀스를 적용 할 수 없습니다.
중앙 저장소에서 자주 업데이트해야하므로 별도의 svn/git을 사용하는 것은 옵션이 아닙니다.
문제입니다 - git svn --help
(남성 페이지)가 지역 지점에서 (SVN의 트렁크에서 추적 설정) 마스터 지점에 git merge
를 사용하는 것은 좋지 않습니다 말한다,이 파티를 망칠 것 같은 git svn dcommit
은 더 이상 작동하지 않습니다.
나는 정확히 사실이 아니다 것을 알고 제대로 마스터 이전에 병합에으로 업데이트 된 지점에서 병합하는 경우 당신은 git merge
을 사용할 수 있습니다,하지만 난 그게 더 안전하고 실제로 git format-patch
및 git am
를 사용하는 것을 시도하고있다. 우리는 코드 리뷰를 사용하고 있으므로 어쨌든 패치를 만들고 있습니다. 나는 또한 git cherry-pick
에 대해 알고 있었지만 실제로는 패치를 읽지 않고이 패치에 해당하는 커밋을 실제로 리콜하지 않고 단지 git am /reviewed/patches/dir/*
만 남기고 싶습니다.
그럼 git svn
과 git am
의 문제점은 무엇입니까? 그것은 간단합니다 - 약간의 어려운 점에 대한 git am
은 CRLF에 LF 제공된 패치 (정확히 말하면 git-mailsplit
이이를 수행하고 있습니다)에 대한 변환입니다. 리베이스가 아닌 경우. git format-patch
도 적절한 (LF- 종료) 패치를 생성합니다.
내 repo는 대부분 이므로 CRLF (그대로 유지해야 함) 잘못된 EOL로 인해 패치가 제대로 작동하지 않습니다. diff를 CRLF으로 변환하고 어떻게 든 해킹을 방지하기 위해 git am
을 해킹하는 것도 효과가 없습니다. 파일을 삭제하거나 삭제하면 오류가 발생합니다. - git apply
은/dev/null에 대해 불만을 토로합니다 (그러나 그는 /dev/null^M
을 얻었습니다).
git am --ignore-space-change --ignore-whitespace
으로 적용하면 은 LF 엔딩을 곧바로 인덱스에 적용 할 수 있습니다. 또한 이상합니다. 나는 그것이 (S을 통해) svn에 커밋을 통해 보존하고 그것을 체크 아웃하고 나는 밖으로 시도하고 싶지 않다면 모르겠다.
물론 실제 diff를 변환하기 위해 패치를 해킹하는 것은 여전히 가능하지만 간단한 작업에는 너무 많은 해킹이 필요합니다.
따라서 패치를 만들고 동일한 시스템의 동일한 저장소에 적용 할 수있는 확실한 방법이 있습니까? 이상하게 느껴진다. msysgit은 자신의 패치를 적용 할 수 없다.
--keep-CR --ignore 공백
이전에 비슷한 문제가 있었고'git am --keep-cr' IIRC를 사용하여 해결했습니다 ... – eckes