저는 SVN을 사용하여 큰 프로젝트를 진행하고 있는데, 많은 시간을 다른 사람의 브랜치에 있는 것들을 살펴보고 가지고 놀아야 합니다. 하지만 저는 이러한 변경 사항을 커밋하는 대신 로컬에 유지하고 싶습니다. 그러나 실수로 svn ci -m"blabla"
다른 사람의 브랜치에 내 변경 사항을 입력하고 커밋하는 것은 매우 쉽습니다 . 지점에는 자신이 누구인지 알 수 있는 몇 가지 식별자가 있습니다. 예를 들어 다음과 같습니다.
project-aa
project-bb
etc...
내 프로젝트는 bb 프로젝트입니다. 올바른 브랜치에 커밋하는지 확인하는 방법이 있나요? 예를 들어 제출할 때마다 경로의 텍스트에 "-bb"가 포함되어 있지 않으면 확실한지 묻는 메시지가 표시됩니다.
가능합니까?
답변1
쉘 기능을 사용하겠습니다.
svn () {
if [[ $1 == "ci" || $1 == "commit" ]] && [[ $PWD != *"-bb"* ]]; then
echo "don't commit to someone else's branch" >&2
return 1
fi
# now, do the actual svn command
command svn "$@" # quotes are crucial here
}
답변2
Bash 스크립트 래퍼를 만들어 이전 위치에 배치하거나 PATH
기존 svn
프로그램 파일의 이름을 바꿀 수 있습니다.
스크립트는 단순히 인수에 문자열이 포함되어 있는지 확인하고 문자열이 발견되었는지 여부에 따라 반응합니다.
답변3
결제 방법자식-svn. git의 이점(예: 브랜치 간 빠른 전환, 더 나은 diff, 오프라인 작업을 위한 전체 로컬 복사 등)을 얻을 수 있으며 커밋한 모든 내용은 로컬 git 저장소로 이동하며 코드를 보내려면 추가 푸시 단계가 필요합니다. svn으로 돌아갑니다.
git-svn은 항상 매우 강력하지는 않습니다. 때로는 svn의 변경 사항을 동기화하지 못하고 변경 사항을 svn으로 다시 푸시하는 것이 때로는 고통스럽습니다. 그러나 이는 사용 사례에는 중요하지 않습니다.