2013-04-22 9 views
1

약 100 개의 CVS 리포지토리가 있으며, 여기에는 git로 변환하는 것이 좋습니다. 우리는 git cvsimport을 사용하여 잘 작동합니다.어떻게 특별한 성격을 지닌 성도와 함께 git cvsimport를 할 수 있습니까?

하지만 파일 이름에 특수 문자가 포함 된 파일이 있습니다. 특수 문자는 새로운 git 저장소의 파일 이름에 인쇄 할 수없는 문자로 끝납니다.

CVS 클라이언트와 CVS 서버가 모두 Windows에서 실행 중입니다. Windows 클라이언트는 모든 파일에 대해 cp1252 문자 세트를 사용하고 있습니다. git cvsimport은 cygwin을 사용하여 호출됩니다. Windows에서는 사용할 수 없기 때문입니다.

git cvsimport을 실행 한 후 git에서 적절한 파일 이름을 얻으려는 아이디어가 있습니까?

답변

1

우리는 모든 커밋에서 파일 및 디렉토리 이름을 수정하기위한 2 개의 스크립트를 작성했습니다. 일부 문자를 입력 할 수 없습니다 OS 및 단말기에 따라

#!/bin/bash 
echo "$1 --> $2" 

cmd="if [ -d '$1' ] 
then 
mv '$1' '$2' 
fi" 

git filter-branch --tree-filter "$cmd" --force -- --all 

: 디렉토리에 대한

#!/bin/bash 
echo "$1 --> $2" 

cmd="if [ -f '$1' ] 
then 
mv '$1' '$2' 
fi" 

git filter-branch --tree-filter "$cmd" --force -- --all 

: 파일의 경우

. 대부분의 경우 첫 번째 패턴에 ?을 입력하기 만하면됩니다. 스크립트는 파일/디렉토리가 현재 체크 아웃 분기에 표시된다고 가정합니다.