문제

공식적인 체크인을 기다리지 않고 코드 개발 시 변경 사항을 저장하는 지속적인 버전 제어 시스템을 본 적이 없습니다.물론 변경 사항은 '체크인 안 됨'으로 저장되지만 백업을 위해 저장되어 실제로 공식 체크인을 수행하기 전에 다른 사람이 볼 수 있습니다.

나는 이것을 본 적이 없으며, 그것이나 그와 유사한 것이 존재하는지, 그리고 그것이 좋은 생각일 수도 있고 아닐 수도 있는 이유가 무엇인지 궁금합니다.

현재 프로그래머들은 소스 코드 제어를 코드 패킷 통합으로 생각하지만 해당 패킷을 더 작게 만들고 지속적으로 통합하는 것은 어떨까요?

-아담

도움이 되었습니까?

해결책

현재 프로그래머는 소스 코드 제어를 코드 패킷을 통합하는 것으로 생각하지만 해당 패킷을 작게 만들고 지속적으로 통합하지 않겠습니까?

나는 DVC가 이미 기본적 으로이 작업을 수행하고 있다고 말합니다. 분산되어 있기 때문이 아니라 헌신이 훨씬 빠르기 때문입니다. git을 사용하면 SVN보다 훨씬 더 자주 커밋합니다. 코드 (사용 git add -i 또는 git gui), 그리고 일반적으로 완전한 파일보다는 코드 라인을 추적하는 데 훨씬 더 중점을 둡니다 (전복과 같은 "전통적인"VC '

또한, Git이 작동하는 방식은 본질적으로 말한 것처럼 "변경 사항은 물론 '체크인하지 않음'으로 저장 될 것입니다. 명령 .. 당신은 당신이 저장할 때마다 커밋 할 수 있고, 당신이 원한다면 단일 커밋으로 다시 제출할 수 있습니다.

"연속 버전 제어"를 수행하는 도구는 쉘 스크립트로 간단히 수행 할 수 있습니다.

while [ 1 ]; do
   git add -a && git commit -m "Autocommit at $(date)";
   sleep 10;
done

대본이 있습니다. CACM (github), 비슷한 일을합니다

CACM]은 특정 디렉토리를보고 모든 변경 사항을 독립형 git 저장소에 전달합니다.

그냥 사용하려면 :

cacm --repo dir_of_git_repo --watch dir_to_watch

왜 당신이 그렇게하고 싶은지 잘 모르겠습니다. VC를 사용하는 데 가장 유용한 것 중 하나는 내가 변경 한 내용의 차이 (마지막 커밋 이후)입니다. 일정한/자동화 된 커밋이 소음 일 것 같습니다 ..

또한, "e"텍스트 편집기 흥미로운 기능이 있으며 분기와 함께 실행 취소 기록을 시각화합니다. 이있다 그것에 대한 블로그 포스트 스크린 샷으로.

다른 팁

일정한 자동 저장 작업은 버전 시스템의 작업이 아니라 편집기를위한 작업입니다. 버전 시스템에 새 버전이 표시되면 반쯤 된 단어가 아니라 다른 버전에서 의미있는 변화를 나타냅니다.

Eclipse에는 정확히 그렇게하는 '지역 역사'라는 기능이 있습니다. SAVES 사이에 소스 파일의 사본을 보관합니다. 심지어 삭제 된 폴더를 추적합니다. 그것은 내 엉덩이를 여러 번 절약했습니다. 로컬 역사를 로컬 컴퓨터에서만 발생하는 저수준 버전 컨트롤로 볼 수 있습니다. 이것의 단점은 물론 다른 기계에서 작업 할 때 다른 지역 역사를 가질 것입니다.

배포 버전 제어 시스템을 사용할 수 있습니다. 바자, git, 수은제. 그런 다음 현지에서 커밋 할 수 있습니다.

나는 다양한 DVCS에 대한 일부 inotify 기반 플러그인을 보았지만 이는 매우 똑똑할 수 있습니다.실제로 가장 이상적인 방법은 쓰기 시 복사 파일 시스템에 리포지토리를 저장하여 자주 세분화된(불변) 파일 버전이 DVCS 외부에 보관되도록 하는 것입니다.

다른 사람들이 말했듯이, 나는 작은 약속을 많이 하는 것을 선호합니다.DVCS를 사용하면 트렁크 또는 마스터 브랜치가 손상되는 것에 대해 걱정할 필요가 없으며 작업이 완료된 후에만 푸시할 수 있습니다.파일을 편집할 때 유해한 개정에 대해 걱정할 필요가 없습니다.

Linux에서는 다음을 사용합니다. ext3cow 내 HG/Git 저장소를 저장합니다.이것은 당신이 설명하는 종류의 기능을 제공합니다.안타깝게도 저는 Linux 이상으로 이식 가능한 그런 제품을 알지 못합니다.어쩌면 어떤 미친 팀이 Python으로 하나를 생각해 낼 수도 있습니다.

이 질문은 이전에도 여러 번 나왔기 때문에(각각 다른 맥락에서) ext3cow(그러나 이식 가능)와 같은 것이 필요하다는 것은 분명합니다.그러나 나는 특히 거대한 나무에서 DVCS 자체가 부풀어 오르는 것을 원하지 않습니다.

DVCS가 아닌 파일 시스템에서 이를 요청해야 한다고 생각합니다.

체크인하고 싶지 않습니다 모든 변화. 함께 작동 할 수있는 원자 변화 세트를 확인하려고합니다. 메소드에 매개 변수를 추가하고 저장하고, 체크인하고 (및 CI 빌드 실행) 저장 한 다음 아직 메소드에 대한 통화를 업데이트하지 않았기 때문에 빌드가 중단됩니다.

당신은 같은 것을 의미합니다 전복 자동 오버링?

면책 조항 : 나는 자동 오버링이 개발에 좋은 아이디어라고 말하거나 개인적으로 그렇게 할 것이지만 기술이 존재한다고 말하는 것은 아닙니다.

원하는 경우 Git과 같은 DVC로 모든 라인 또는 캐릭터를 커밋 할 수 있습니다. 일반적으로 DVC를 사용할 때 Git Bisect와 같은 도구의 문제를 쉽게 사냥 할 수 있도록 가능한 한 자주 커밋하는 것이 좋습니다. 당신이 설명하는 효과를 원한다면, 당신은 선택의 편집자를 스크립트하여 모든 저장에 커밋 할 수 있습니다 ... 실제로는 그것이 조금 많을 것이라고 생각합니다.

어떤 사람들은이 목적을 위해 개발 지점을 설정하고 개발자가 품질 보증 수준 지점으로 병합하기 전에 작업 할 때 변화를 저지하게합니다. 이러한 변경 사항을 주요 개발 지점에 저지르고 병합하기 전에 개발자가 자신의 지점에서 일하는 작업을 수행 할 수도 있습니다. 따라서 분기는 이것을 해결할 수 있습니다.

나는 Eclipse가 매출 할 때마다 이와 같은 일을했거나 사용했다고 생각합니다. 버그를 식별하려고 노력하면서 코드가 조각으로 해킹 당했을 때 몇 번 저장되었습니다.

다음은 다른 접근법입니다. 거의 매일 나는 무언가가 일을 멈추고 그 이유를 모른다. 몇 분 동안 되감기를하고 어떤 변경이 이루어 졌는지, 어떤 파일을 확인했는지 확인합니다. 따라서 Continouos 버전 제어의 필요성에 동의합니다.

동시에 매일 저장소에 수천 개의 작은 변경 사항을 확인하고 싶지 않다는 것은 사실입니다.

좋아, 이것이 당신이하는 일입니다. 둘 다 사용하지만 혼합하지 마십시오. 소스 컨트롤은 전체 팀에서 사용해야하며 때때로 그 결과를 확인해야합니다. 동시에 모든 작은 변경을 저장하고 실제로 정보를 쉽게 사용할 수있는 로컬 개인 파일 버전 소프트웨어를 실행합니다.

그게 다야. 나는 사용한다 역사 탐험가 내가 그것을 개발하는 데 도움이되었지만 다른 사람들도 있습니다.

JetBrains에서 개발 한 연속 버전 제어 시스템에 관심이있을 수 있습니다. 아직 공개적이지는 않지만 Malmo의 Jetbrainsday의 기조 연설에서 그 기능을 보여줍니다. http://new.livestream.com/jetbrains/jetbrainsday1/videos/29348962

처럼 댄이 언급했다, IBM Visual Age IDE는 소스 코드 파일에 저장 한 모든 버전을 유지했습니다. 그러나이 접근법은 IDE에만 국한되지 않습니다. 그만큼 12 월 VMS 운영 체제는 그것과 비슷한 접근 방식을 취했습니다 버전의 파일 시스템. VMS에서 각 파일의 전체 이름에는 버전 번호가 포함되었으며 파일을 저장할 때마다 새 사본이 이전에 가장 높은 숫자보다 높은 버전 1로 만들어졌습니다.

두 가지 접근 방식은 브랜치가 부족하다는 점에서 오늘날 우리가 알고 있듯이 버전 제어와 일치하지 않습니다 (또는 그 문제에 대해 특히 동일한 소스 파일에서 작업하는 여러 사람을 용이하게하기 위해 설계된 기능). 그러나 그들은 모두 인간 오류에 대한 백업의 목적에 도움이되는데, 이는 버전 제어의 가장 유용한 측면입니다.

Java에서 몇 년이 넘는 프로그래밍 경험을 보유한 나는 여전히 시각적 시대가 개발 과정에 가져 왔던 (향수와 함께) 새로운 접근법을 기억합니다. 시각적 연령은 소스 코드에 대한 파일 접근 방식이 없었습니다. 코드는 관계형 데이터베이스에 저장되었습니다. 일반적으로 단일 방법을 보여주는보기에서 작업합니다. 당신은 또한 전체 파일보기를 가지고 있었지만 그렇게 많이 사용하지 않을 것입니다.

버전 제어와 관련하여 저장마다 버전이 생성됩니다. 버전 번호/이름으로 메소드, 클래스/인터페이스, 패키지 또는 전체 프로젝트를 명시 적으로 확인할 수 있습니다. 또한 방법 수준에서 소스를보다 미세한 입자 제어 할 수있었습니다. Eclipse로 작업을 시작한 후 시각적 시대의 많은 기능을 물려 받았으며 오늘날 코드의 모든 "저장"을 저장하는 역사 기능이 있습니다.

합리적인 클리어 케이스 a의 개념이 있습니다 동적보기. Windows에서 개발보기는 매핑 된 드라이브로 표시되지만 코드 변경은 저장하자마자 서버 측면으로 저장됩니다. 그게 당신이 찾고있는 것입니까?

예상대로, 이런 식으로 일하는 데 트레이닝 오프가 있습니다. 대답 ~ 위에, 이것은 권장 사항이 아닙니다 ...

Vesta는 어떻습니까?

http://www.vestasys.org/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top