Submodule로 Subversion 저장소를 가질 수 있습니까?
내 Git 저장소에 Submodule로 Subversion 저장소를 추가할 수 있는 방법이 있습니까?
다음과 같은 경우:
git-svn submodule add https://svn.foo.com/svn/proj --stdlayout svn-project
https://svn.foo.com/svn/proj
는 Subversion 저장소를 가리킵니다.
난 있는 걸 안다.git-svn
Subversion 저장소와 상호 작용할 수 있습니다.그래서 생각중입니다. 혹시 Subversion 저장소를 확인할 수 있는 방법이 있을지도 모릅니다.git-svn
서브모듈로 사용할 수 있습니다.
아니요. 전용 깃 저장소에 svn 저장소의 거울을 설치하는 것이 최선의 방법입니다.
git svn clone -s http://subversion.example.com/ mysvnclone
cd mysvnclone
git remote add origin git@example.com:project.git
git push origin master
그러면 git 저장소를 원래 프로젝트에 하위 모듈로 추가할 수 있습니다.
cd /path/to/gitproject
git submodule add git://example.com/project.git -- svn-project
git add svn-project
git commit -m "Add submodule"
svn:externals와 git 서브모듈 사이에는 한 가지 개념적 차이가 있는데, 만약 당신이 이것을 전복의 관점에서 접근한다면 당신을 넘어뜨릴 수 있습니다.git 서브모듈은 당신이 준 수정판에 고정되어 있습니다."upstream"이 변경되면 하위 모듈의 참조를 업데이트해야 합니다.
따라서 업스트림 서브버전과 재동기할 때:
cd /path/to/mysvnclone
git svn rebase
git push
... git 프로젝트는 우리가 이전에 약속했던 원래의 수정본을 여전히 사용할 것입니다.svn HEAD로 업데이트하려면 다음을 사용해야 합니다.
cd /path/to/gitproject/svn-project
git checkout master
git pull
cd ..
git add svn-project
git commit -m"Update submodule"
방금 이걸 겪었습니다.저는 rq와 비슷하지만 조금 다른 일을 하고 있습니다.필요한 svn 저장소의 git 클론을 호스팅하기 위해 서버 중 하나를 설정했습니다.제 경우에는 읽기 전용 버전만 원하고 서버에 베어 레포가 필요합니다.
내가 실행하는 서버에서:
GIT_DIR=<projectname>.git git init
cd <projectname>.git/
GIT_DIR=. git svn init svn://example.com/trunk
GIT_DIR=. git svn fetch
git gc
그러면 기본 레포가 설정되고, cron 스크립트를 통해 업데이트할 수 있습니다.
#!/usr/bin/python
import os, glob
GIT_HOME='/var/www/git'
os.chdir(GIT_HOME)
os.environ['GIT_DIR']='.'
gits = glob.glob('*.git')
for git in gits:
if not os.path.isdir(git):
continue
os.chdir(os.path.join(GIT_HOME, git))
if not os.path.isdir('svn/git-svn'):
#Not a git-svn repo
continue
#Pull in svn updates
os.system('git svn fetch && git gc --quiet')
#fix-svn-refs.sh makes all the svn branches/tags pullable
os.system('fix-svn-refs.sh')
#Update the master branch
os.system('git fetch . +svn/git-svn:master && git gc --quiet')`
이를 위해서는 http://www.shatow.net/fix-svn-refs.sh 의 fix-svn-refs.sh 도 필요합니다. 이는 대부분 다음에서 영감을 얻었습니다. http://gsocblog.jsharpe.net/archives/12
나는 왜 그것이git gc
여기에 필요하지만, 나는 할 수 없었습니다.git pull
없이.이
따라서 이 모든 것이 끝나면 rq의 지시에 따라 git 서브모듈을 사용할 수 있습니다.
현재 git-svn은 svn:external을 지원하지 않습니다.그러나 다음과 같은 두 가지 다른 도구가 있습니다.
-
서브Git은 서버측 솔루션으로 서브버전 저장소에 대한 Git 액세스를 가능하게 하며, 그 반대의 경우도 가능합니다.자세한 내용은 설명서를 참조할 수 있지만 일반적으로 SubGit을 사용하는 것은 꽤 쉽습니다.
$ subgit configure --layout auto $SVN_URL $GIT_REPO
위 명령은 SVN 프로젝트에서 분기 레이아웃을 감지한 다음 SVN 프로젝트를 미러링할 준비가 된 빈 베어 깃 저장소를 만듭니다.자격 증명이 ~/.subversion 디렉토리의 SVN 자격 증명 캐시에 이미 저장되어 있지 않은 경우 자격 증명을 요청할 수 있습니다.도를 조정할 수도 .
$GIT_REPO/subgit/authors.txt
SVN 작성자 이름을 Git ID에 매핑합니다.$ subgit install $GIT_REPO $ ... let initial translation complete ... $ TRANSLATION SUCCESSFUL
지금 새로 만든 Git 저장소에 Subversion 저장소가 연결되어 있습니다.은 모든 SubGi은 SVN을 Git commit every합니다의 Git commit에서 commit로 합니다.
svn commit
고 Git에 SVN든다을한에은yn을dovtnvt한고t에n에든n은dygit push
.
추가로 필요한 것은 Git 저장소를 커미터가 사용할 수 있도록 하는 것입니다.그것에 대해서 git-http-backend를 보세요.그러면 생성된 Git 저장소를 일반적인 서브모듈로 추가할 수 있습니다.SubGit은 Bitbucket Server의 추가 기능으로도 사용할 수 있으며 자세한 내용은 여기를 참조하십시오.따라서 git-svn과 같은 외부 도구를 사용할 필요가 없습니다.
SubGit은 독점 소프트웨어이지만 소규모 기업(최대 10명의 커밋), 학술 및 오픈 소스 프로젝트에 무료입니다.
-
SmartGit은 클라이언트 측의 git-svn을 대체합니다.기능에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
특히 SmartGit은 git 서브모듈과 svn:external을 모두 지원하므로 저장소에서 이들을 혼합할 수 있습니다.
SmartGit은 독점 소프트웨어이지만 비상업적인 용도로는 무료입니다.
rq가 말한 것 외에도, 다른 방법은 svn 외부 참조가 작동하는 방식을 더 잘 모방하는 타사 "외부" 프로젝트(http://nopugs.com/ext-tutorial), 를 사용하는 것입니다.외부를 사용하면 git 또는 svn 저장소를 추적할 수 있으며 변경 사항을 해당 저장소에 업스트림으로 푸시하는 것이 더 쉬워 보입니다.그러나 프로젝트 구성원이 별도의 패키지를 다운로드하여 설치해야 합니다.
저는 아직 서브모듈이나 외장재를 사용해 본 적이 없지만, 몇 시간 동안 모든 대안에 대해 읽었고 외장재가 제 요구에 더 잘 맞을 것 같습니다.Jon Loeliger(http://oreilly.com/catalog/9780596520120), 의 "Version Control with Git" 15장에 이러한 방법과 기타 사용자 지정 방법에 대한 훌륭한 논의가 있습니다.
Piston은 이를 지원하기 위해 다시 작성되고 있으며, 반대로 기존 Subversion URL과 Subversion 저장소 및 git+git에 추가되어 있습니다.
유감스럽게도 그것은 출시되지 않은 것 같습니다.
, 가 .git-remote-testsvn
, 그래서 뭔가.
git submodule add testsvn::http://www.telegraphics.com.au/svn/bzquips/trunk/ \
module/bzquips
효과가 있을 겁니다그런가요?
언급URL : https://stackoverflow.com/questions/465042/is-it-possible-to-have-a-subversion-repository-as-a-git-submodule
'programing' 카테고리의 다른 글
(T)의 크기 == (정조 T)의 크기 및 (T)의 정렬 == (정조 T)의 정렬 여부 (0) | 2023.09.16 |
---|---|
Excel 피벗 테이블에서 "Grand Total" 열로 정렬하시겠습니까? (0) | 2023.09.16 |
중복된 행의 인덱스 찾기 (0) | 2023.09.11 |
요소를 사용하여 Python에서 XML 구문 분석트리 예제 (0) | 2023.09.11 |
데이터베이스에서 드롭다운 목록을 채우는 올바른 방법은 무엇입니까? (0) | 2023.09.11 |