Programing

모든 새 파일을 SVN에 추가하는 방법

lottogame 2020. 11. 29. 09:32
반응형

모든 새 파일을 SVN에 추가하는 방법


CLI에서 많은 양의 파일을 생성하는 ORM을 사용하고 있습니다. 내가 실행할 때 svn add나타나는 디렉토리 내의 모든 파일에서 쉽게 실행할 수있는 방법이 있습니까??svn status

편집 이 파일은 디렉토리 트리에 존재하므로 *한 디렉토리에 대한 추가 가 작동하지 않습니다.


당신은 svn add path/to/dir/*이미 버전 제어에 이미있는 것에 대해 경고를받을 수 있지만 그렇지 않은 모든 것을 추가 할 것입니다.


이렇게하면 지정된 디렉토리 트리 아래에 알 수없는 (무시 된 경우 제외) 모든 파일이 추가됩니다.

svn add --force path/to/dir

그러면 현재 디렉토리와 그 아래에있는 모든 알 수없는 (무시 된 제외) 파일이 추가됩니다.

svn add --force .

참고로 이것들 매우 유사한 질문입니다.

이것들은 나에게 가장 잘 작동하는 것 같습니다. 공백에서도 작동하며 무시 된 파일을 다시 추가하지 않습니다. 나는 내가 본 다른 답변에 나열된 것을 보지 못했습니다.

첨가:

svn st | grep ^? | sed 's/?    //' | xargs svn add

풀이:

svn st | grep ^! | sed 's/!    //' | xargs svn rm

편집 : 무시 된 파일을 유지하려면 "add *"를 사용하지 않는 것이 중요합니다. 그렇지 않으면 무시 된 모든 항목이 다시 추가됩니다.


svn status | grep "^\?" | awk '{print $2}' | xargs svn add

웹 어딘가에서 가져 왔지만 한동안 사용해 왔으며 잘 작동합니다.


경우 svn add whatever/directory/*없는 작업을 수행, 당신은 그것을 힘든 방법을 수행 할 수 있습니다

svn st | grep ^\? | cut -c 2- | xargs svn add

해결책

svn status | grep ^? | sed 's/?    //' | xargs svn add

공백과 함께 작동하지 않습니다. 대신 사용할 수 있습니다

svn status | grep ^? | sed 's/^?       //' | xargs -I fn svn add "fn"

(내 시스템에서 선행 공백의 수가 다른 것처럼 보입니다-조정하십시오).


다음을 실행할 수 있어야합니다.

svn add *

이미 버전 관리중인 파일에 대해 불평 할 수 있지만 새 파일도 추가합니다.

하지만 이러한 생성 된 파일을 버전 제어에 추가 할 것인지 여부를 생각할 수 있습니다. 그것들은 컴파일 된 코드와 같은 파생 된 아티팩트로 간주 될 수 있으므로 추가해서는 안됩니다. 물론 이것은 당신에게 달려 있지만 생각할 것이 있습니다.


svn add *

일을해야합니다. 다음 사항을 확인하십시오.

svn commit

나중에 :)


생선 과 같은 일부 껍질에서는 **globbing을 사용하여 수행 할 수 있습니다 .

svn add **

svn status | grep "^\?" | awk '{ printf("\""); for (f=2; f <= NF; f++) { printf("%s", $f); if (f<NF) printf(" "); } printf("\"\n");}' | xargs svn add

이것은 markb의 대답과 인터넷에서 약간의 사냥을 기반으로 한 것입니다. 보기 흉해 보이지만 OS X에서 작동하는 것 같습니다 (공백이있는 파일 포함).


공백이 포함되어 있어도 버전이 지정되지 않은 모든 파일을 추가합니다.

svn 상태 | awk '{$ 1 = ""; 인쇄 $ 0} '| xargs -i svn 추가 ​​"{}"


svn status무시되는 파일을 존중하는 새 파일 또는 누락 된 파일을 찾는 데 사용 하는 이러한 명령이 마음 에 듭니다.

svn add $( svn status | sed -e '/^?/!d' -e 's/^?//' )

svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )

bash one-liner 중에서 이것이 가장 예쁘다고 생각합니다.

svn status | tee >(awk '/^?/{print $2}' | xargs -r svn add >&2) | awk '/^!/{print $2}' | xargs -r svn delete

모든 새 파일을 추가하고 누락 된 모든 파일을 삭제합니다. 주의해서 사용하고 빠른 액세스를 위해 별칭을 설정할 수 있습니다.

Mac 용 참고 : xargs -r에서는 GNU 확장이 지원되지 않을 수 있습니다. 이 경우 추가하거나 삭제할 파일이 없으면 제거하고 경고를 무시하십시오.


나는 svn 버전 제어의 초보자입니다. 그러나 사람들이 이미 설정된 svn : ignore 속성을 무시하지 않고 파일을 추가하려는 경우 다음과 같이 문제를 해결했습니다.

  1. svn add --depth 빈 경로 / 대상 / 디렉터리
  2. Execute "svn propset svn:ignore -F ignoreList.txt --recursive" from the location where the ignoreList.txt resides. In my case this file was residing two directories above the "path/to/directory", which I wanted to add. Note that ignoreList.txt contains the file extensions I want svn to ignore, e.g. *.aux etc.
  3. svn add --force path/to/directory/.

The above steps worked.

참고URL : https://stackoverflow.com/questions/2120844/how-do-i-add-all-new-files-to-svn

반응형