2010-01-18 5 views
1

일반적으로 우리는 소프트웨어 응용 프로그램을 Subversion (클라이언트에서 svn 업데이트, 단방향)을 사용하여 클라이언트에 배포합니다. 현재 중국에 있고 서버가 캐나다에 있기 때문에 대기 시간이 길어 (대용량 파일 다운로드 속도가 좋음) 고객의 문제가 발생합니다. Subversion은 오랜 시간이 지나면 오류가 발생하여 시간 초과됩니다.대기 시간이 많은 네트워크 연결을 통해 많은 (작은) 파일을 동기화하는 방법

우리의 응용 프로그램에는 많은 약 100MB-200MB의 작은 파일 (.aspx, .config 등)과 몇 개의 큰 파일 (.dll, .jpg)이 많이 있습니다. 나는 현재하고 고려하고

다음

  1. 가 외국 기계를
  2. 이 결과를
  3. FTP 우편 서버에 로컬 SVN 체크 아웃을하거나 에 큰 zip 파일을 rsync는
  4. 임시 폴더에서 파일의 압축을 풉니 다.
  5. 해당 폴더에서 로컬 rsync를 수행하여 일반적인 설치 폴더로 이동하십시오.

더 좋은 해결책이 있습니까?

  • 대상에 대해 Subversion 미러를 더 가깝게 설정하는 중입니까? ? (나는 단지 한 달에 몇 시간 만 필요하지만 발견하기 어려울 수도있다)
  • 다른 버전 제어 시스템을 사용하고 있습니까? (대기 시간이 긴 연결에 대해서는 이 더 낫다)?
  • 대상 대신에 모든 데이터를 전송에서 다시 적용 (2 진 파일 포함) 전복 패치를 패키지로이 방법이 있습니까?
  • Amazon S3를 사용하는 DropBox를 사용하여 파일을 임시 폴더로 전송하는 것이 더 좋을까요?
+0

>> "모든 데이터를 보내는 대신 대상에 다시 적용 할 서브 버전 패치 (바이너리 파일 포함)를 패키지화하는 방법이 있습니까?" // 당신은 자식을 설명하고 있습니다. – jpdaigle

답변

3

샷을 줄 때까지 작은 파일의 전체 트리를 노크하지 마십시오. 모든 단일 파일에 대한 왕복 이동은 파이프 라인 화되어 있지 않으므로 전체 데이터 세트에서 다른 어떤 것보다 빠릅니다. (TCP처럼 높은 대기 시간 링크에서 프레임을 순서가 지정된 패킷으로 재구성 할 수 있습니다.) 왕복을 피하는 방법에 대한 설명은 how rsync works을 참조하십시오.

+0

현재 테스트를 진행 중입니다. 우승자가있는 것 같아. 나는 파일 단위로 파일을 전송한다고 가정하고 있었지만 잘못 본 것 같습니다! –

+0

내 테스트에서 FTP보다 느리게 (약 10 배) 실행되었지만 Subversion과 충돌하지 않았으므로 다음 실행 중에 동일한 내용을 다시 다운로드 할 필요가 없습니다. –

2

모든 파일의 모든 변경 사항에 대해 유닉스 스타일의 패치를 만들 수 있습니다. zip 파일로 전송하십시오.

+0

이렇게하려면 스스로 롤백해야합니다. 나는 Subversion이 이것을 상자 밖에서 처리한다고 생각하지 않는다. – nholling

+0

바이너리에서는 작동하지 않지만 +1해도됩니다. TortoiseSVN은 작업 복사본에 패치를 적용 할 수 있습니다. –

+0

이것은 나에게 너무 복잡하게 들리며 원격지의 터미널 서비스 세션에서 TortoiseSVN을 사용하면 모든 클릭이 등록하는데 3 초가 걸리는 잔인한 시간이 될 것입니다. – jpdaigle

0

git (아마도 git-svn과 함께)을 사용하여 전송을 처리 할 수 ​​있습니다. 파일 버전의 차이를 이동시키는 데 놀랍도록 효율적입니다.

그렇지 않으면 xdiff 바이너리 diff 도구를 사용할 수 있습니다.