>

체크 아웃 한 파일이 100 개 이상 있다고 가정하겠습니다. 하나씩 지정하거나 파일에 추가하지 않고 변경 목록에 모두 추가 할 수있는 방법이 있습니까?

  • 답변 # 1

    운영 체제를 사용하고 있습니까?

    Linux로 가정하겠습니다. 다음과 같이 해보십시오 :

    ls *.c *.h */*.c */*.h | xargs svn cl source
    
    

    이것은 현재 및 즉시 서브 디렉토리의 모든 C 및 헤더 파일을 변경 목록 소스에 추가합니다. 위의 명령은 파일 이름의 공백에 문제가있을 수 있습니다. 좀 더 정교한 것을 원한다면, 이것을 크기에 맞춰보십시오 :

    find . -name .svn -type d -prune -o -type f -print0 | xargs -0 svn cl source
    
    

    이것은 .svn 디렉토리에없는 모든 일반 파일을 변경 목록 소스에 추가합니다. 이것은 파일 이름의 공백과도 함께 작동합니다.

  • 답변 # 2

    무엇을 원하는지 명확하지 않습니다. 100 개 이상의 파일을 체크 아웃했지만 저장소에 파일을 추가하려고합니다. 작업 공간에 이미 파일을 추가하고 작업 공간에 수정 사항을 커밋합니다.

    이미 체크 아웃 된 작업 사본에 디렉토리 트리를 추가하려면 svn add --force . 를 사용하십시오.  현재 디렉토리에서 버전을 지정하더라도 현재 디렉토리에서 시작하여 작업 복사본에 버전이없는 모든 파일이 추가됩니다. 추가 된 파일은 여전히 ​​저장소에 커밋해야합니다.

    수정을 커밋하려면 svn commit -m "*insert comment here* . 를 실행하면됩니다.  현재 디렉토리에서 저장소까지 작업 복사본의 모든 변경 사항을 커밋합니다.

  • 답변 # 3

    일반적으로 텍스트 편집기를 사용하여 시각적 확인이 필요하므로 올바른 경로에 있습니다. . 여기에 vim을 사용하자. 그러나 emacs도 똑같이 잘 할 수있다.

    프로젝트 루트에 새로운 버퍼로 vim을 시작

    그럼 vim 실행 내부

    :r !svn st
    
    

    svn st 의 출력을 읽습니다.  버퍼에. 원하는대로 확인하거나 변경 목록 외부의 항목을 삭제할 수 있습니다.

    M project/path/to/file1
    M project/path/to/file2
    M project/path/to/file3
    M project/path2/to/file1
    M project/path23/to/file1
    
    

    그런 다음 에디터 매직을 사용하여 명령으로 바꿀 수 있습니다. 예를 들면 ::

    :%s/^M/svn cl change/
    
    

    위 줄을 바꿀 것입니다

    svn cl change project/path/to/file1
    svn cl change project/path/to/file2
    svn cl change project/path/to/file3
    svn cl change project/path2/to/file1
    svn cl change project/path23/to/file1
    
    

    이러한 명령을 쉘로 보낼 수 있습니다 ::

    :w !bash
    
    

    빠른 목록 창에 각 명령의 출력이 표시됩니다.

    이것은 다른 솔루션보다 더 장황하게 보일지 모르지만 확인을 위해 전체 프로세스를 시각적으로 볼 수 있습니다 (emacs dired 모드를 생각하십시오).

    이러한 명령은 이전 이력에 보관되므로 일반적으로 다시 입력 할 필요가 없으며, 이력에서 다시 불러 오십시오.

  • 이전 쉘 스크립트 예기치 않은 연산자에서 오류를 파악할 수 없습니다
  • 다음 일관되지 않은 배쉬 기록