Subversion 저장소와 그것이 어떻게 작동하는지 잘 이해하지 못하는 새로운 사용자를 상대합니다.
간단히 말해서, 임의의 .svn 폴더를 복사하여 로컬 구조가 엉망이 되었기 때문에 다음을 수행했습니다.
- 로컬 구조를 스테이징이라는 폴더에 복사합니다.
- 준비 디렉터리에서 모든 .svn 폴더를 반복적으로 삭제합니다.
- "깨끗한 폴더"에 대한 저장소를 체크아웃하세요.
이제 우리는 마지막 단계에 이르렀습니다. 준비 폴더 내용을 가져와 깨끗한 내용을 덮어쓰는 것입니다.
스테이징 디렉터리의 내용을 클린 디렉터리에 복사하고 클린 디렉터리의 모든 콘텐츠를 삭제하되 클린 폴더의 .svn 폴더는 그대로 두라는 명령이 필요합니다.
이것은 rsync 작업처럼 들립니다. 다음 명령이 맞나요?
rsync -avr --exclude=.svn* [staging] [clean]
답변1
rsync의 옵션이 -C
원하는 것일 수 있습니다.
하지만 매뉴얼 페이지의 간략한 설명에 속지 마십시오. 이 옵션은 CVS에서만 작동하는 것처럼 보이지만 rsync 버전에 따라 거의 모든 일반 버전 제어 시스템의 파일을 건너뜁니다.
# rsync version: 3.0.7
-C, --cvs-exclude auto-ignore files in the same way CVS does
...
The exclude list is initialized to exclude the following items
(these initial items are marked as perishable — see the FILTER
RULES section):
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS
.make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak
*.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe
*.Z *.elc *.ln core .svn/ .git/ .bzr/
then, files listed in a $HOME/.cvsignore are added to the list
and any files listed in the CVSIGNORE environment variable (all
cvsignore names are delimited by whitespace).
답변2
거의 - 이건 되어야 해
rsync -av --exclude='.svn*' [staging] [clean]
또는 쉘이 와일드카드 문자를 확장하지 못하도록 하는 다른 형태의 인용입니다. (와일드카드는 이름이 로 시작하는 예상치 못한 파일과만 일치 --exclude=.svn
하지만 위험을 감수하지 않는 것이 좋으며 쉘이 일치하지 않는 와일드카드를 차단하거나 빈 목록으로 확장하도록 구성된 경우에도 작동합니다.)
-r
이미 포함되어 있습니다 -a
. Extra r
는 추가 기능일 뿐 아무런 해를 끼치지 않습니다.
--exclude
해당 인수와 일치하는 파일이 복사되지도 않고 재귀 순회를 위해 고려되지도 않게 합니다. rsync의 일반적인 어려움은 디렉토리의 일부를 제외하고 반대 작업을 수행하는 것입니다. 바라보다Rsync 필터: 하나의 패턴만 복사몇 가지 팁.
이 특별한 경우에는버전 제어 디렉터리를 포함하지 않습니다.원하는 것을 빠르게 얻을 수 있는 방법입니다.