문제

그래서 문제가 생겼습니다.당신이 그렇게 해서는 안 되지만 나는 얼어붙은 보석과 레일을 체크인했습니다.나는 그것이 쉽고 어쨌든 그렇게 큰 문제가 아닐 것이라고 생각했습니다.나중에 Rails를 업데이트하고 그 과정에서 Vendor/Rails 디렉터리의 모든 .svn 파일을 삭제했습니다.내가 정말 그랬다는 걸 들었어 ~해야 한다 해야 할 일은 내 공급업체 디렉토리에 대한 svn:externals와 관련된 작업을 수행하는 것입니다.정확히 무엇을 해야 하며 Capistrano는 내 저장소에 없는 냉동 보석을 계속 사용할 수 있나요?내 고정된 보석을 사용하지 않을 경우 어떻게 .svn 파일을 올바르게 재생성할 수 있습니까? ~ 할 것이다 다시 일어난다.

감사해요!

도움이 되었습니까?

해결책

  1. 삭제된 파일을 복구하려면 .svn 디렉토리, 그냥 실행 svn update.그들은 돌아올 것이다.

  2. 방금 내보낸 보석을 체크인했습니다.나는 사용한다 gem unpack <gemname> 에서 vendor/gems 디렉토리와 svn add 그리고 commit 거기에서.

  3. 무엇이든 vendor/plugins 또는 vendor/rails 피스톤을 사용하여 추적합니다.예를 들어, 여기에 레일을 넣는 방법은 다음과 같습니다.

    % piston import http://dev.rubyonrails.org/svn/rails/tags/rel_2-0-2/ vendor/rails

피스톤을 사용하려면 gem install piston.

참고 Rails가 계속 git을 사용하고 Subversion 저장소를 업데이트하지 않을 수 있으므로 피스톤을 교체할 수 있는 다른/더 나은 솔루션을 찾아야 합니다.

다른 팁

개인적으로 나는 부분적으로 사용하고 있습니다. 피스톤 공급 업체 디렉토리를 관리합니다.

두 가지 이유로 svn:externals에 대해 조언해야 합니다.

  1. 해당 svn 서비스에 연결할 수 없는 환경에 배포 중일 수 있습니다.

  2. 배포하려고 하는데 외부 svn이 다운되면 어떻게 되나요?

내 조언은 피스톤이나 보석 압축 해제를 사용하고 공급업체 트리에서 생산 종속성을 관리하는 것입니다.

부인 성명:저는 Ruby/Rails를 모르기 때문에 Frozen gem이 무엇인지는 모르지만(컴파일된 바이너리나 토큰화된 소스라고 가정하지만) Subversion에 대해서는 잘 알고 있습니다.

.svn 디렉토리에는 Subversion "장부"만 보관됩니다.그 안에는 복구할 수 없는 것이 없습니다.

.svn 파일을 삭제하는 것은 전혀 문제가 되지 않습니다..svn 디렉터리가 누락된 디렉터리가 Subversion 작업 복사본(체크아웃한 디렉터리)의 디렉터리 트리 내부 어딘가에 있는 경우 해당 디렉터리를 삭제하고 svn 업데이트를 수행하면 다시 생성됩니다.

전체 트리에 .svn 파일이 누락된 경우 전체 트리를 삭제하고 svn 체크아웃을 다시 수행하십시오.

svn:externals는 "기호 링크"와 같습니다.프로젝트 A와 프로젝트 A를 사용하는 프로젝트 B가 있습니다.당신이 하는 일은 프로젝트 A의 라이브러리 디렉토리를 참조하는 svn:external 속성을 추가하는 것입니다. 따라서 프로젝트 B를 체크아웃할 때마다 프로젝트 A의 라이브러리 디렉토리가 자동으로 그 안에 배치됩니다.예를 들어, Subversion의 다른 프로젝트에 대한 evn:external 참조를 포함하여 다른 곳의 라이브러리에 대한 외부 항목을 보유하는 "thirdparty"라는 디렉토리가 있는 경우가 많습니다.

이와 같은 버전 문제를 해결하기 위한 한 가지 팁은 라이브러리(또는 고정된 gem)에 대해 별도의 릴리스 디렉터리를 갖고 이를 필요로 하는 프로젝트에서 적절한 릴리스 디렉터리에 대한 svn:external 참조를 사용하는 것입니다.새 릴리스가 나오면 새 릴리스 디렉터리와 svn 업데이트를 가리키도록 svn:external 속성을 변경하면 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top