2013-01-07 6 views
1

현재 버전 관리 서버로 SourceAnywhere Hosted을 사용하고 있습니다. 나는 GitHub로 이주하려고하고 있으며, 8 년 이상의 역사를 보존하고 싶습니다.SourceAnywhere에서 Git/GitHub 가져 오기

누구든지이 마이그레이션을 성공적으로 마쳤으며 도구/프로세스를 공유 했습니까?

지금까지는이 작업이 수행되지 않았다고 가정하고 SourceAnywhere SDK 또는 명령 줄 클라이언트를 사용하여 git fast-import 스크립트를 작성하려고합니다. git에 익숙하지 않다면 시작 지점으로 나를 안내 할 수있는 기존 스크립트 나 리소스가 있습니까?

답변

2

나는 마침내 프로젝트를 정리하고 GitHub에 추가했습니다. 여기에서 찾으실 수 있습니다 : SAWHtoGit.

그것은 않는 몇 가지 작은 한계, 논리적 변경 집합으로 역사를 수출 꽤 좋은 직장 :

  • SourceAnyWhere를에서 삭제 된 모든 파일이 전혀 역사에 가져올 수 없습니다 때문에 SourceAnywhere API의 한계
  • 이전/새 디렉토리에 대한 매핑을 제공하는 한 '이동'된 모든 파일을 가져올 수 있습니다.

그 외에도 Google의 목적에 부합하기 때문에 코드와 기록을 GitHub으로 성공적으로 마이그레이션 할 수있었습니다. 다른 사람들에게도 도움이되기를 바랍니다.

+0

내 대답 외에도 좋은 의견. +1 – VonC

1

가져 오기 부분은 간단합니다 : 당신이 당신의 최초의 repo에서 파일의 일관된 세트를 추출하면
이 , 당신이 어떤 수정/추가/제거를 감지 할 자식의 repo에 추가 할 수 있습니다.

"일관된"= "컴파일 중"과 같이 안정된 상태를 나타내는 파일 집합 : 일반적으로 SAW와 같은 파일 수준에서 작업하는 repo에서 일반적으로 레이블로 표시됩니다 (반대로 어려움이

git --work-tree=/path/to/extracted/file --git-dir=/path/to/git/repo/.git add -A 
git --work-tree=/path/to/extracted/file --git-dir=/path/to/git/repo/.git commit -m "new revision from SAW import" 

: 저장소 수준에서 작동 자식에, 이눔하는 파일의 세트를 추가하기 전체의 repo의 내용)

를 나타내는 각각의 개정으로 간단합니다 무엇을 가져올 지 결정합니다. 하는 것, 큰 비 대한 REPO을 피할 수 :
나는 모든 레이블 목록 추천하고, 각 프로젝트는 자신의 망할 놈의 repo에 있어야한다는

참고합니다 (SAW CLI 사용) GetProject -label에서 모든 프로젝트를 얻을하는 데 사용할 것 모든 프로젝트를 하나의 참조에 넣을 수있는 SAW가있는 중앙 집중식 모델과는 달리 복제하기가 어렵습니다.


OP Dancomments :

내 역사를 추출합니다 (SDK 최선을 허용하는 것처럼)와이 빠른을 작성하는 작은 유틸리티를 작성하는 SourceAnyWhere를 COM SDK를 사용할 수 있었다 가져 오기 스크립트를 사용하여 모든 것을 git에로드하십시오.
모든 중개 변경 집합이 반드시 "일관성있는"것은 아니지만 최종 결과는 현재 상태와 일치하며 우리는 많은 역사를 보존했습니다.

+0

감사합니다. 당신이 전에했던 것처럼 소리 : 우리는 레이블을 사용하지 않지만,'GetProjectHistory -prj $/-v'는'GetProject -time'에 사용할 수있는 '일관된'타임 스탬프를 줄 것이라고 생각합니다. 그래도 사용자와 체크인 설명을 보존/매핑하고 싶습니다.이 접근법이 허용하지 않는 것처럼 보입니다. 댓글은 GUI에 표시되는 동안 CLI와 관련되지 않는 것 같습니다. – Dan

+0

@ Dan이 방법으로 허용할까요? 쉽게. git에는 인증이 없다는 것을 잊지 마십시오 (http://stackoverflow.com/a/5685757/6309), 커밋 (프로젝트의 전체 내용의 개정판) * 하나 * 이름 (커미터 이름). 'GetProjectHistory -prj $/-v'가 다중 기여로 구성된 상태를 보여 준다면, 다중 이름이 첨부 된 상태로 임포트 할 수 없습니다. 주의 사항 : 일부 파일이 아닌 모든 내용을 가져옵니다. 힘내는 다른 오래된 중앙 집중식 VCS (http://stackoverflow.com/a/645771/6309)와 달리 파일별로 파일을 작동하지 않습니다. – VonC

+0

도움 주셔서 감사합니다! 나는 당신의 솔루션을 정확히 사용하지 않았지만 ('GetProject-time'은 내가 생각한 것처럼 작동하지 않았다), 그것은 올바른 방향으로 나를 가리켰다. SourceAnywhere COM SDK를 사용하여 작은 유틸리티를 작성하여 내 기록을 추출 (SDK에서 허용하는 한 최선)하고 '빠른 가져 오기'스크립트를 작성하여 git에 모두로드 할 수있었습니다. 모든 중개 변경 집합이 반드시 "일관성있는"것은 아니지만 최종 결과는 현재 상태와 일치하며 우리는 많은 역사를 보존했습니다. 앞으로 코드를 정리하고 GitHub에서 공유 할 계획입니다. – Dan