모든 버전을 관리 할 수있는 버전 관리 시스템은 무엇입니까? [닫은]


17

몇 달 전에 나는 Subversion과 GIT를 파고 실망했습니다. 그들은 소스 코드를 잘 처리하지만 다른 측면은 다루지 않습니다. 예를 들어, 버전 제어하에있는 웹 사이트는 파일 / 디렉토리 소유권, 파일 / 디렉토리 읽기 및 쓰기 액세스, 액세스 제어 목록, 타임 스탬프, 데이터베이스 컨텐츠를 관리해야합니다. 외부 링크. 한 달 된 백업에서 다시로드하는 것만 큼 완벽한 복귀를 수행 할 수있는 버전 제어 시스템이 있습니까?


12
대신 백업 시스템을 원하십니까?
Macke

2
Mac의 OS X에서 웹 사이트를 실행하는 것을 고려 했습니까? Time Machine은 현재 사용 가능한 가장 간단한 백업 솔루션이며 필요할 경우 롤백이 매우 쉽습니다.

1
이 주제에 대해 진지하게 관심이 있다면, 파일 시스템 버전 관리 및 소스 코드에 대한 버전 제어 시스템을 넘어서는 버전 관리 데이터베이스에 대한 연구를 살펴 봐야합니다.
야콥

scm이 처리하지 않는 것들을 처리하기 위해 약간의 스크립팅을 작성하는 것은 무엇이 문제입니까? 그렇게하면 원하는 것을 얻고 소스 제어하에 얻을 수 있습니다.
Newtopian

답변:


44

버전 제어 시스템의 역할에 대해 혼란스러워합니다. 실행중인 웹 사이트를위한 백업 시스템이 아니어야합니다. 정적 컨텐츠를 관리하는 훌륭한 작업을 수행하여 제어 된 방식으로 프로덕션으로 이동합니다. 태그 지정 및 자동 체크 아웃을 올바르게 사용하면 빠르게 변경되는 사이트도 버전 관리 시스템에 유지할 수 있습니다.

버전 관리 시스템은 지난 달 사이트의 모습에서 오늘의 모습 (최소한 소스 제어를받는 구성 요소의 경우)에 대한 정보를 제공합니다. 웹 사이트를 재 구축하는 데 필요한 모든 것을 포함해야합니다 (동적 콘텐츠 제외). 다른 사람들이 지적했듯이, 사용 권한 및 소유권에 대한 변경 사항은 스크립팅되어야하며 해당 스크립트는 버전 관리에 포함됩니다.

웹 사이트에 대한 액세스 권한은 일반적으로 매우 간단합니다. (기본적으로, 웹 서버가 모든 내용을 읽고 거의 쓸 수 없도록해야합니다.) 웹 서버 서브 버전에 의해 쓰기 가능해야하는 몇몇 디렉토리의 디렉토리 소유권을 제외하고, 아마도 git은 권한을 처리합니다. 웹 서버에서 쓸 수있는 디렉토리에는 일반적으로 웹 사이트 소스와 별도로 관리되는 동적 컨텐츠 (웹 사이트에서 작성 및 업데이트)가 포함됩니다.

웹 사이트에서 복잡한 권한 및 ACL을 가진 웹 사이트를 사용하도록 요청받은 경우 웹 사이트를 관리하는 데 사용되는 프로세스에 대해 심각한 우려가 있습니다. 버전 제어 시스템을 구현하고 ACL을이 시스템으로 옮기는 것이 제가 진지하게 고려해야 할 솔루션 중 하나입니다.

블로그 항목 또는 주석과 같은 동적 컨텐츠는 일반적으로 사이트를 빌드하는 데 사용되는 버전 제어가 아닌 데이터베이스 또는 기타 데이터 저장소에 포함됩니다. 데이터 저장소는 (이 소프트웨어와 마찬가지로) 컨텐츠의 버전 제어를 제공하도록 배열 될 수있다. 많은 위키는 버전 관리 시스템을 사용하여 개정을 추적합니다.

편집하다:

내가 사용하는 수정은 (a) 버전 관리가 전혀 없음, (b) 프로덕션 사이트는 마스터 사이트, (c) 변경 될 때마다 아카이브, (d) 아카이브 스크립트는 ACL과 같은 정크를 제거하고, (e) 설치 스크립트는 파일 권한과 같은 다른 정크를 수정합니다.

이러한 문제는 사이트를 버전 제어 시스템으로 가져오고 프로세스를 변경하여 해당 시스템을 통해 마스터 사이트가 업데이트되도록하여 처리 할 수 ​​있습니다. (a), (b) 및 (c)는 버전 관리에 의해 직접 처리됩니다. (c)가 더 잘 작동하도록 릴리스에 태그를 지정할 수 있습니다. (d) 배포 시스템 만 사이트를 변경하는 경우 일반적으로 문제가되지 않습니다. 사이트 컨텐츠에 ACL이 필요하지 않았습니다.

(e) 초기 생성 및 주요 변경시에만 실행해야합니다. 버전 제어에서 사이트를 업데이트하고 자주 실행되는 스크립트도 포함 할 수 있습니다. 이러한 스크립트는 사이트를 혐오 제어 시스템에 유지할 때 매우 간단한 경향이 있습니다.

그런데 왜 이런 일을하는 일반 시스템을 만들지 않았습니까?

버전 관리 시스템을 사용하는 경우 필요하지 않기 때문입니다.

버전 관리 시스템은이 모든 것들을 추적 할 수 있지만, 아무것도하지 않습니다.

CVS와 Subversion은 모두 사용중인 경우 추적해야하는 내용을 추적합니다. 버전 관리 시스템을 사용하지 않거나 추적하지 않아도되기 때문에 추적해야 할 사항을 추적하지 않습니다. 버전 관리 시스템을 사용할 때 추적해야 할 내용을 추적합니다.

버전 관리를 사용하여 콘텐츠를 관리하는 여러 사이트에서 작업했습니다. 모두 준비 사이트, 배포 빈도 및 업데이트 완료에 대한 요구 사항이 서로 다릅니다. 사이트가 버전 관리에 들어가면 나머지 요구 사항을 비교적 쉽게 충족 할 수있었습니다. CVS 및 Subversion에 대한 설명서는 가능한 업데이트 방법을 제안합니다.

버전 제어 컨텐츠 내의 특정 영역에 대한 액세스를 제한하려면 ACL이 필요할 수 있습니다. 그러나 나는 신뢰를 바탕으로 일하는 경향이 있습니다. 버전 관리를 통해 누가 언제 무엇을했는지 쉽게 확인할 수 있습니다. 파일을 다시 포맷하지 않으면 누가 언제 어떤 라인을 추가했는지 보여주는 주석이 달린 파일 히스토리를 쉽게 얻을 수 있습니다.


질문이 처음부터 틀린 이유를 살려 내면 +1입니다.
Macke

2
+1 그럼에도 불구하고 다른 사람들이 귀하의 답변으로부터 혜택을받을 수 있도록 질문을하는 것이 좋습니다.
oliver-clare

버전 관리 시스템은 "여기 다른 컴퓨터에서 7 월 28 일 현재 사이트를 구축하십시오."라고 말할 수있는 기능을 제공해야합니다. 버전 관리는 변경 사항을 추적하기 때문에 백업보다 효율적입니다. 그렇지 않으면 매일 백업이 작업을 정상적으로 수행합니다.
Andy Canfield

예, 사용중인 수정 사항은 (a) 버전 관리 없음, (b) 프로덕션 사이트는 마스터 사이트입니다. (c) 변경 될 때마다 아카이브합니다. (d) 아카이브 스크립트는 ACL과 같은 정크를 제거합니다. e) 설치 스크립트는 파일 권한과 같은 다른 정크를 수정합니다. 그런데 왜 이런 일을하는 일반 시스템을 만들지 않았습니까? 버전 관리 시스템은이 모든 것들을 추적 할 수 있지만, 아무것도하지 않습니다.
Andy Canfield

+1 : 정답입니다. 그러나 버전 제어 시스템이 해당 항목을 추적 할 수 없기 때문에 추가하지 않기를 원합니다. 권한 및 사용자 이름은 호스트별로 다르며 형식은 시스템별로 다릅니다. 특히 운영 체제가 다른 경우 도구가 자동으로 다른 호스트로 포트를 이식 할 수있는 방법이 없습니다.
Jan Hudec

10

그들 모두와 그들 중 아무도 없습니다.

질문을 암시하는 방식으로 소스 세부 정보를 직접 제어하여 세부 정보를 직접 관리하는 것은 좋지 않습니다.

그러나 bash 스크립트 (* nix) 또는 powershell 스크립트 (Windows)를 작성하면 이러한 목표 중 일부 또는 전부를 달성 할 수 있습니다. 이 스크립트는 소스 제어에 저장 될 수 있습니다.

그런 다음 해당 스크립트를 빌드 아티팩트 중 하나로 만들고 배치의 일부로 실행할 수 있습니다.


이. 소스를 얻는 아이디어는 VCS에서 소스를 꺼내어 최종 제품을 빌드하는 데 사용할 수 있다는 것입니다.
Blrfl

2

IMHO 자체 버전 관리 시스템은 그런 식으로 사용되지 않습니다.

그러나 내가하려는 경향은 소스 컨트롤에서 버전을 얻을 수 있도록 빌드 파일 / powershell 파일을 하나만 실행하면 모든 것이 작동하고 다시 실행되는 것입니다.

이를 위해서는 다음이 필요합니다.

  • 소스 제어에서 앱이 의존하는 모든 라이브러리
  • 환경을 설정하는 빌드 파일
  • 환경 요구 사항에 대한 지침 (소스 제어에 SQL Server 설치를 원하지 않음)

1

귀하의 경우에 필요한 것은 구성 관리 도구 라고 생각합니다 . 내가 사용한 것은 꼭두각시 입니다.

당신을 인용 :

파일 / 디렉토리 소유권 관리, 파일 / 디렉토리 읽기 및 쓰기 액세스,

한 줄로 완료했습니다 (사용자 존재, 디렉토리 존재 등) ...

액세스 제어 목록,

이것이 Windows ACL 인 경우 Windows 용 특정 CM 도구가 있습니다.

타임 스탬프,

다시 터치 꼭두각시 스크립트에서 한 행에서 유닉스 명령은이 작업을 수행 할 수있다.

데이터베이스 내용.

그것은 많은 프레임 워크, 즉 다른 모든 것이 있는지 확인하는 cron 작업으로 빌드됩니까?

외부 링크.

그것에 대해 아무것도 몰라

물론 구성 관리 코드를 작성한 후에는 버전 관리 시스템에 코드를 넣거나 관련된 시스템에서 검색 할 수 있습니다. 당신은 그로부터 멀어지지 않을 것입니다 :-).


"타임 스탬프-꼭두각시 스크립트의 한 줄에 하나의 유닉스 명령이이를 수행 할 수 있음"의 의미를 이해하지 못합니다. 내 사이트에서 사이트 버전을 얻으려면 전체 사이트 트리를 스캔하고 최신 파일의 날짜와 시간을 반환합니다. 버전 관리 "Checkout"에서 파일을 체크인 할 때와 동일한 타임 스탬프를 제공하고 '지금'으로 설정하지 않기를 원합니다. 하나의 유닉스 명령으로 어떻게합니까?
Andy Canfield

: 물론, 당신은이를 확인 "터치"를 찾고 있습니다 en.wikipedia.org/wiki/Touch_(Unix을) . 일반적으로 지금 시간을 체크 아웃 할 때 적용되지만 어떤 이유로 다른 타임 스탬프를 원할 경우이 작업을 수행합니다.
Dimitrios Mistriotis의

나는 당신의 질문의 이론적 근거를 실제로 좋아했습니다. 당신은 가능한 한 많은 것을 자동화하고 싶습니다. "올바른 방법"입니다. 어떻게해야하는지, VControl로가는 것과 그렇지 않은 것에 대한 노하우가 필요합니다. 나는 더 많은 업계 사람들이 똑같이 생각하기를 바랍니다 ...
Dimitrios Mistriotis

0

모든 디지털 문서의 모든 측면을 관리하는 최고의 버전 관리 시스템이 있습니다. Xanadu 라고 불리는이 파일은 파일 시스템과 같은 것이 일반적이되기 전에 1960 년 에 Theodor Holm Nelson 에 의해 만들어졌습니다 . 이론적으로 모든 것이 완벽하게 해결되었습니다. 실제로 Xanadu는 Nelson이 계획 한대로 구현 된 적이 없지만 웹 및 버전 제어 시스템을 포함하여 더 많은 특수 시스템에 영감을주었습니다. Nelson의 연구는 여전히 새로운 가치가 있으며, 모든 측면을 관리하는 일반적인 VCS가없는 이유에 대한 답을 얻을 수 있습니다.

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