라이브 사이트에 /.svn/ 폴더가있는 것이 안전합니까? (제거하고 svn 업데이트 기능을 유지하는 방법은 무엇입니까?)


10

내 PHP 웹 사이트의 코드를 업데이트하기 위해 svn 업데이트를 수행하고 있지만 .svn/폴더를 완전히 남겨 둡니다 .

파일을 공개적으로 읽을 수있게하는 것은 위험하지만 시스템을 업데이트하기는 매우 쉽다고 생각합니다.

svn update시스템을 업데이트하는 데 사용 하지만 .svn/폴더 를 내 보내지 않는 방법이 있습니까?

답변:


21

아파치를 사용하는 경우 :

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

그러면 사람들이 .svn원격으로 (브라우저를 사용하여) 디렉토리에 액세스하지 못하지만 프로젝트에서 계속 유지하고 (및 svn 기능) 할 수 있습니다.

BTW 당신은 대체 할 수 있습니다 \.svn위해 \.git또는 \.cvs당신이 전복과 다른 뭔가를 사용하는 경우.


그러면 웹 사이트의 모든 .svn 디렉토리가 차단됩니까? 나는 많은 서브 디렉토리를 가지고있다
siliconpi

현재 내 httpd.conf에는 <Directory /> Options FollowSymLinks AllowOverride All </ Directory>이 있습니다. 바로 아래에 작성한 것을 별도의 것으로 추가하거나 두 항목을 병합해야합니까?
siliconpi

.svn그래서 yes 라는 디렉토리와 일치합니다 .
coredump 2013 년

별도로 추가 할 수 있습니다.
coredump 2013 년


3

SVN에서 라이브 사이트로 코드를 내보내려고합니다 ...

그것을 사용하지 마십시오 svn update. 업데이트는 코드를 내 보내지 않고 작업 복사본을 업데이트하는 데 사용됩니다. svn export지정된 저장소에서 클린 디렉토리 트리를 내보낼 때 대신 사용하십시오 .

--force플래그를 사용하면 내보내기에서 기존 파일을 덮어 쓸 수 있습니다.

SVN 내보내기 수동 입력


OP가 사용하고 싶지 않은 경우 동정 할 수 있습니다 export. 저장소의 완전히 새로운 사본을 가져야합니다. 소규모 연결 (예 : 웹 서버는 호스팅 된 서버)에서 큰 저장소라면 번거롭지 만 SVN 저장소는 지역 사무소에 있으며 1Mb 링크로 공유됩니다. update매번 모든 것을 얻을 필요가 없다는 것을 의미합니다.
마크 헨더슨

정당한 포인트. 아마도 사이트의 로컬 복사본으로 내보내고 변경 사항을 원격 웹 서버로 재 동기화하면 해당 상황에서 작동합니까? 나는 그 문제를 본 적이 없으므로 그것을 고려하지 않았습니다.
gsreynolds 1

2

프로덕션 / 라이브 사이트에는 넣지 않습니다. Coz 나는 라이브 코드를 편집하는 것이 나쁜 생각을 잊어 버린 나와 다른 개발자를 원하지 않습니다. 설치 스크립트가 .svn 파일을 필터링합니다.


@kerner-그렇다면 어떻게 업데이트합니까?
siliconpi

1
svn export그들을 사용 하고 필터링하지 않습니까?
pjmorse

내 사이트에 사용하는 설치 스크립트가 있으며 각각에 맞게 약간 조정합니다. 일반적으로 데이터베이스, db 테이블 및 db 사용자 빌드, 기본 사용자 또는 관리자 설정 등의 작업을 수행합니다. 따라서 prod로 내보내기 위해 prod 사용자 (사람 또는 스크립트)는 svn 작업을 확인합니다. ~ /를 따라 어딘가에 복사 한 다음 해당 작업 복사본의 구성원 인 설치 스크립트를 실행 한 다음 작업 복사본을 선택적으로 삭제합니다.
ekerner

1

Capistrano 와 같은 적절한 배치 시스템을 조사해야합니다 . 즉, 프로덕션 서버에는 하위 버전이 필요하지 않으며 여러 서버에 배포하고 배포에 사용자 지정 논리를 추가 할 수 있습니다. 또한 배포를 비교적 쉽게 롤백 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.