저는 웹 개발자이고 다양한 언어와 프로젝트로 작업합니다(그렇지 않은 사람이 있을까요?). 저는 이러한 프로젝트/저장소 중 다수를 로컬에서 다양한 디렉토리에 복제했습니다.
이제 수년에 걸쳐 수십 개의 프로젝트를 복제한 결과, 내가 복제한 항목을 찾는 데 종종 시간이 걸리기 때문에 혼란스러운 느낌이 듭니다.
간단히 말해서, 로컬 개발 리포지토리를 관리하는 시스템이 필요합니다. 목적은 다음과 같습니다.
- 더 나은 개인 조직과
- 새 기계를 구입하면 구성이 더 빨라질 것입니다.
주로 저장소이지만 git
저장소도 있습니다.svn
cvs
이 문제를 해결하는 데 도움이 되는 도구가 있나요? 나는 바퀴를 재발명하고 있다는 사실을 알기 위해 맞춤형 솔루션(스크립트)을 작성하고 싶지 않습니다.
이 문제를 해결하는 데 구성 관리 도구(chef, puppet, ansible)가 적합한가요?
답변1
myrepos
이는 여기에서 적절할 수 있습니다. 이를 통해 다양한 유형의 여러 소스 코드 저장소를 관리할 수 있습니다. 단일 구성 파일에 모든 리포지토리를 설명하고 필요에 따라 동시에 또는 개별적으로 관리할 수 있습니다.
Chef나 Ansible과 같은 중앙 집중식 구성 관리 도구는 여기에 적합하지 않다고 생각합니다...
답변2
/usr/local/src
tarball이든 일부 타사 SCM 호스트에서 나온 모든 타사 소스를 에 보관합니다 .
(왜 거기에 있습니까? 기본 설치 접두어가 /usr/local
대부분의 패키지에 적용되므로 소스 코드를 바이너리와 함께 두는 것은 어떻습니까?)
그래서 새로운 개발 머신을 설정하기 위해 저는 이렇게 말합니다.
$ cd /usr/local/src
$ sudo chown $USER .
$ scp -r oldbox:/usr/local/src/* .
활성 개발 상자가 여러 개 있으면 마지막으로 사용한 하위 트리부터 계속해서 새 하위 트리를 끌어야 한다는 뜻이지만 이것이 큰 부담은 아니라고 생각합니다.
때로는 최신 안정 릴리스 tarball에서 소스 코드를 풀고 현재 SCM "헤드" 체크아웃을 하는 등 특정 패키지의 여러 버전이 있는 경우가 있습니다. 이 경우 트리는 다음과 같습니다.
$ cd /usr/local/src
$ mkdir somepkg
$ cd somepkg
$ tar xvf ~/Downloads/somepkg-*tar*
$ mv somepkg-1.2.3 1.2.3
$ git pull http://someserver.example.com/somepkg.git
$ mv somepkg head
즉, 병렬성 somepkg/1.2.3
과 somepkg/head
트리가 있으므로 필요에 따라 둘 사이를 전환할 수 있습니다. 어떤 이유로든 두 개 이상의 안정 버전을 사용해야 할 때 동시에 여러 개의 "안정" 버전을 사용하게 되는 경우가 있습니다.
모든 것을 로컬 파일 서버에 저장하면 괜찮을 것이라고 생각할 수도 있지만 이는 여러 수준에서 실패합니다.
오늘날 대부분의 파일 서버는 SMB를 실행합니다. NFS나 기타 POSIX 호환 네트워크 파일 시스템을 통해 항상 원하는 파일 시스템을 얻을 수는 없습니다. 이는 권한이 엉망이 되고 일부 합법적인 POSIX 파일 이름이 허용되지 않으며 대소문자를 구분하지 않아 문제가 발생할 수 있음을 의미합니다.
습관적으로 트리(예:
./configure && make
) 내에서 빌드하는 경우 플랫폼별 바이너리 출력이 발생하므로autom4te.cache
상자를 변경할 때마다 이 작업을 수행해야 합니다.make clean && ./configure
언제든지 이 문제를 해결할 수 있습니다.나무로 만들기그러나 모든 패키지가 이런 방식으로 스스로를 빌드하는 방법을 아는 것은 아닙니다.
NAS에서 소프트웨어를 컴파일하는 속도가 느립니다.
각 개발 시스템에 별도의 복사본을 보관하면 이러한 문제를 피할 수 있습니다. 결제 트리를 새 상자에 넣은 make clean ; ./configure
후에도 여전히 말해야 scp
하지만, 일단 그렇게 하면 이제 새 상자에 새 트리를 반복해서 넣는 대신 SCM 호스트 git pull
에서 svn up
최신 변경 사항을 가져와 업데이트를 얻을 수 있습니다.scp
이 문제를 더 잘 해결하기 위해 웹용 패키지 관리자를 만들려는 여러 가지 시도가 있습니다.공,잼,새로운 프로젝트 관리,덩어리등. 이들의 문제는 어느 패키지에서도 사용하려는 패키지를 모두 찾을 수 없다는 것입니다. 가까운 미래에는 타사 SCM에서 얻은 리소스를 관리해야 합니다.