2009-07-09 5 views
4

많은 프로그래머와 마찬가지로 필자는 갑자기 Light를보고 내 코드에서 대대적 인 수술을하는 "영감"에 정기적으로 적응하기 쉽습니다. 일반적으로이 방법은 효과적이지만, 수면 부족/카페인 부족 또는 문제의 불완전한 이해로 인해 - 나는 아주 어리석은 짓을 한 적이 있습니다.저장소에 커밋하지 않고 무한 "실행 취소 스택"가져 오기?

이런 일이 발생하면 다음 단계로 피해를 되돌려 놓습니다. 가장 쉬운 방법은 내 편집기에서 스택을 실행 취소하는 것입니다. 버전 제어는 다음으로, 가장 최근의 커밋 (빌드를 중단시키는 코드는 습관적으로 커밋하지 않음)과 영감의 순간 사이에 변경 사항을 적용하면 손실됩니다. 저장소에 없었기 때문에 코드가 존재하지 않았습니다.

나는이 작업에 대해 걱정할 필요가없는 방식으로 작업 환경을 설정하고 싶지만 완전히 만족스런 솔루션을 찾지 못했습니다. 이상적으로 :

  1. 파일을 저장할 때마다 새로운 복구 가능한 버전이 만들어집니다.
  2. "자동 저장"버전을 사용하면 기본 저장소가 복잡해지지 않습니다. (대다수는 완전히 쓸모가 없을 것입니다. Ctrl-S를 몇 번 누르십시오.)
  3. "자동 저장"버전은 로컬에서 매우 빠르게 검색 할 수 있어야합니다. 3 초의 처리 시간을 가진 저장소는 수백 개의 개정판을 신속하게 스캔하려고 시도하지 않습니다.

옵션은 내가 생각했습니다

  • 그냥 코드가 파손 될 수 있습니다 경우에도 큰 변화를하기 전에 메인 저장소에 커밋합니다. 단점 : "영감을 받았을 때", 나는 일반적으로 이것에 대한 마음의 존재가 없다. 빌드를 중단합니다.
  • 자동 버전 관리가 활성화 된 로컬 호스팅 Subversion 저장소가 "웹 폴더"로 마운트됩니다. 단점 : 다른 저장소의 작업 복사본과 잘 작동하지 않습니다. Windows에서 적절한 WebDAV 폴더를 탑재하는 것은 좋지 않습니다.
  • 이전 방법과 동일하지만 대신 주 저장소의 분기를 사용하고 일반적으로 수동으로 커밋 할 때마다 트렁크에 병합합니다. 단점 : 호스팅 된 모든 저장소가 자동 버전 관리를 사용하도록 설정할 수있는 것은 아닙니다. 위의 2 번과 3 번 포인트를 충족시키지 못합니다. 트렁크에서 지점으로 안전하게 역 병합 할 수 없습니다.
  • DVCS로 전환하고 밀 때 모든 작은 커밋을 "결합"합니다. 단점 : 나는 DVCS에 관해서 제일 먼저 모른다. 때때로 Subversion 만 사용할 수있는 도구입니다. 위의 1 번을 어떻게 만날 지 모르겠습니다.
  • 버전있는 파일 시스템에 작업 복사본을 저장합니다. 단점 : Windows에 이러한 기능이 있습니까? 그렇다면 구글은 나에게 그 길을 보여주지 못했다.

누구나 내가 원하는 것을 얻을 수있는 도구 또는 도구 조합에 대해 알고 있습니까? 아니면 모순 된 요구 사항으로 스스로를 설정 했습니까? (어떤 차라리 강하게 생각한다.)

업데이트 : 더 밀접하게 도구를 검사 한 후 이미 사용 (한숨) 내 text editor이 충족 매우 좋은 멀티 백업 기능이 밝혀 내 거의 완벽하게 필요합니다. "숨겨진"폴더에 모든 백업을 저장하는 옵션 (VCSes의 전역 무시에 추가 할 수 있음)은 물론 편집기에서 바로 찾아보기 및 백업과의 비교가 가능합니다.

문제가 해결되었습니다. 조언 주셔서 감사합니다 여러분!

+0

당신이 사용하고있는 편집기에 대해 언급하지 않았다는 사실을 알게 된 경우, 누군가에게 지적 할 수있는보다 우아한 옵션이 편집기에 내장되어있을 수 있습니다. –

+0

EditPad Pro에는 다중 백업 시스템이 있지만 백업과 함께 파일 시스템이 혼란 스럽습니다. 나는 그것이 나를 위해 얼마나 잘 작동하는지보기 위해 시운전을하고있다. –

답변

1

대부분의 편집자 저장 파일의 마지막 버전을하기 전에 백업 파일에 저장합니다. 이 프로세스를 사용자 정의하여 일반 물결표 대신 개정 번호를 추가 할 수 있습니다. 그런 다음 파일을 저장할 때마다 파일 사본을 받게됩니다. 너무 많은 디스크 공간을 차지한다면 각 변경 사항마다 diff를 만들고 편집기를 사용자 정의하여 원하는 개정판을 얻을 때까지 순차적으로 패치를 적용 할 수 있습니다.

+0

흠 ... 나의 편집자는 실제로 내가 고려하지 않았던 이것과 같은 붙박이 멀티 백업 시스템을 가지고있다. 이봐, 나. 그것은 마치 글로벌 설정 인 것처럼 보이지만 비 코딩 용도에 자극을 줄 수있는 것처럼 보입니다. 반면에, 나는 모든 것을 백업하는 것과 같은 * 것을 * 볼 수 있습니다. 나는이 하나에게 시운전을 확실히해야 할 것이다. –

1

Windows Vista, 7 또는 Windows Server 2003 이상을 사용하는 경우 섀도 복사본을 사용할 수 있습니다. 기본적으로 파일의 속성 창에는 이전 버전의 파일을 추적하는 새 탭 '이전 버전'이 있습니다.

서비스가 자동으로 스냅 샷을 생성해야하지만, 바로 내 엉덩이를 꽤 많은 시간을 저장 도전적했다

'vssadmin create shadow /for=c:\My Project\' 

"영감"의 당신의 순간 후 다음 명령을 실행할 수 있습니다 안전을 위해.

Shadow Copy

+0

아주 잘 작동하는 것처럼 들립니다. 아직도 XP를 사용하고있는 것은 부끄러운 일입니다. 아마 나는 Windows 7을보고 시작해야한다. –

+0

다음 주 RTMs! 그렇지 않으면 RC를 시도해보십시오. 그것의 위대한 OS –

0

편집자를 전환 할 때가되었다고 생각합니다. 이맥스는 가변적 인 버전 관리 기능을 가지고 있는데, 파일을 저장할 때 Emacs가 파일을 저장할 때 자동으로 여러 개의 백업을 생성 할 것인지를 결정합니다. 이름은 foo. ~ 1, foo. ~ 2 ~ 등입니다.

3

분산 버전 제어. (mercurial, git, etc ...)

이야기의 요지는 체크 아웃이없고 저장소의 클론 만 있다는 것입니다.

커밋은 사용자가 메인 브랜치에 다시 넣을 때까지만 볼 수 있습니다.

급진적 인 실험 변경을 원하십니까? 저장소를 복제하고 컴퓨터에서 커밋 톤을 수행하십시오. 그것이 효과가 있다면, 그것을 다시 밀어; 그렇지 않다면 단지 repo를 롤백하거나 휴지통에 버리십시오.

+0

예를 들어 Hg를 사용하면 (자주 사용하는 Google 코드가 지원하는 것처럼), 지역을 "자동 커밋"으로 설정하면 기본 분기로 푸시 할 때 단일 변경 세트로 롤백 할 수 있습니까? 또는 각각의 개인이 저장소를 탐색하는 모든 사용자에게 몇 가지 문자를 볼 수 있습니까? –

+0

예, 커밋 (hg commit)은 저장소를 탐색 한 모든 사람이 다시 누르면 해당 저장소를 볼 수 있습니다. 반복 저장하지 않습니다. 마이너 문자를 저장하고 각 작업 델타에 대해 커밋하면 embarassment에서 안전해야합니다. 이것은 아마 우회 될 수 있다고 나에게 말했고, 나는 단지 그것을 직접 할 필요가 없었습니다. – Sufian