2016-08-19 19 views
0

hg forget <files>을 사용하여 hg rm <files>처럼 내 파일 시스템에서 파일을 삭제하지 않고 일부 파일을 언 트랙킹했습니다. 내가 변경을 약속하고 실행 hg status는 이러한 파일을 추적 할 수없는 것으로 ? <files> 예상대로 나열했습니다. 그런 다음 변경 저장소를 원격 저장소에 밀어 넣었습니다. 다른 누군가가 끌어 와서 업데이트했고, 파일 시스템에서 이러한 파일을 삭제했습니다.당신과 다른 사용자의 파일 시스템에서 파일을 삭제하지 않고 추적 할 수 없습니까?

Mercurial이 이러한 파일을 변경되지 않은 것으로 인식하지 않는 이유는 무엇입니까? 변경 내용의 원본과 동일한 방식으로 누군가 다른 사람의 저장소 사본에 hg forget이 표시되는 이유는 무엇입니까?

다른 사람이 파일 시스템에서 삭제하지 않고도 파일을 추적 할 수있는 다른 방법은 있습니까?

답변

0

은 힘내과 의욕은 모두 여기에 같은 문제가 : 당신은 어떤 O (낡은)하는 파일 F이 커밋 있습니다. 이제 O에서 새로운 커밋 N으로 업데이트됩니다. "F"파일이 없습니다.

버전 제어 시스템은 무엇을해야합니까? 음, 그 이유는 F에 따라 달라지지 않습니까? 이전에 사용 되었기 때문에 F을 제거했지만 쓸데없는 혼란이 발생하면 으로 제거해야합니다.

따라서 no-longer-used을 올바르게 삭제하지만 accidentally-committed을 올바르게 수정하는 것이 올바른 이유는 무엇입니까? 그리고 어떻게 VCS는 의미 두 가지 중 어떤, 그것은 볼 수있는 모든 N가 어느 파일이 커밋 동안 즉, O 모두 no-longer-usedaccidentally-committed을 가지고 커밋 것을 주어진 알아야합니까?

은 (힘내이나 의욕 둘은 내가 아는 한,이에 대한 좋은 답변이 있습니다.)

+0

은 당신이 그것을 필요로 무엇을 말할 수 forget''HG의 rm'와'HG를 갖는 지점이 없습니다 몰라서 그래? 제 경우에는 모든 사람들의 지역 개발 환경에 고유하다고 생각되는 내용의 파일을 추적하고있었습니다. – Kevin

+0

불행히도'hg rm'과'hg forget '의 유일한 차이점은 후자가 파일을 작업 트리에 남겨 두었다는 것입니다. 나는 파일을 "버전이 없지만 귀중한"것으로 표시하기 위해'.gitignore' ('.hgignore'와 같은 아이디어)에 들어갈 수있는 것에 대해 힘내에 대한 의미 론적 정의를 내놓으려고 노력했다. "(그래서 삭제하지 마라.) 좋아하는 의미론을 생각해 내지 못했다. – torek

+0

저는 프로그래밍과 VCS에 익숙하지 않아서이 토론은 제 이해를 넘어서는 것일 수 있습니다. 그러나 나는 그들이 어떤 명령을 사용하여 파일을 추적하고 적어도 사람들에게 경고 할 때 왜 추적 할 수 없는지 알지 못합니다. 그들은 변화를 가져옵니다. 로컬에서 추적되지 않는 변경 사항을 가져오고 업데이트하려고하면 경고 메시지가 나타납니다. 업데이트하기 전에 해당 파일을 추적하기 시작해야한다고 생각합니다. 추적 할 수없는 추적 파일을 경고하고, 업데이트하지 않기 전에 로컬에서 추적을 해제하는 옵션을 제공하여 업데이트를 강제로 삭제하거나 강제로 업데이트하지 않도록하십시오. 삭제 되나요? – Kevin