2009-09-19 3 views
5

Mercurial을 사용하여 Drupal 프로젝트 소스 파일을 버전 관리하고 있습니다 (필자는 VCS와 Mercurial 초보자입니다). 그러나 데이터베이스는 여전히 날짜가있는 .sql.gz 파일의 디렉토리를 사용하여 "버전 제어"됩니다.Mercurial hook을 사용하여 버전 관리를위한 데이터베이스 덤프 생성 /로드

내가 원하는 것은 저의 저장소 내의 어딘가에 하나의 데이터베이스 덤프 파일을 가지고, 데이터베이스가 변경 될 때 현재 덤프로 덮어 쓰여지고 다른 버전으로 롤백하려고 할 때 데이터베이스로 가져온 것입니다.

나는 그것을 수동으로 해냈다. 하지만 내가 진정으로 원하는 것은 커밋/업데이트마다 자동으로 덤프 /로드를 수행하는 것입니다. 나는 TortoiseHg의 도구로 작업하는 것을 좋아하기 때문에 처음에는 데이터베이스를 덤프하고 커밋하는 makefile과 같은 외부적인 것보다는 Mercurial에 연결하는 것이 더 좋을 것입니다. 그리고 나는 다른 스크립트를 실행하는 것처럼 느껴지지 않습니다.

이제 후크에 mysql .... < dumpfile.sql과 같은 것이 매 업데이트 후에 데이터베이스 덤프를로드하는 쉬운 방법이 될 것입니다. 자동 덤핑은 어떨까요?

SVN의 사전 커밋 훅에 대해 similar question이 있었으며 허용 된 대답은 아마도 나쁜 생각 일 것입니다. 그것은 Mercurial에 적용됩니까? 어쩌면 다른 후크 (prechangegroup?)가 작동할까요?

편집 :

내가 내 로컬 컴퓨터에 자신에 의해 그것을 사용하고 있음을 지적한다. 단일 사용자 이상으로 확장해서는 안됩니다.

답변

5

pre-commit 후크로 데이터베이스를 덤프하는 것이 좋습니다. precommit 후크를 사용하지 않도록 조심하십시오. 이는 트랜잭션 내부에서 실행되므로 다른 것입니다. 명령이 실행되기 전에 pre-<command> 훅이 실행될 때마다 명령 (update, commit 등) 일반적

.

+0

좋아요! hg 커밋을 통해 잘 작동합니다. 하지만 ... tortoisehg를 사용하면 두 번 커밋해야합니다 (한 번 소스 파일에 대해 한 번 더 새로 만든 데이터베이스 덤프에 대해) ... 주위에 어떻게 알아낼 수 있을까요? –

+0

THG는 파일이 변경된 것으로 생각하는 파일로 제한한다는 것을 의미합니다. 나는 THG를 잘 돌아볼 수 있을지 모르겠다. (아마 THG 메일 링리스트에서 물어볼지도 모른다.) 어쨌든 고마워, – tonfa

+0

. 대부분 커밋에 명령 줄을 사용할 수 있습니다. 나쁘지 않아. –

1

더 많은 업데이트 작업입니다. 난 당신이 데이터베이스에서 일하고 있다고 가정하고 의도적으로 SQL 스키마를 내보내고 커밋했습니다. 다른 사람이 귀하 (또는 다른 위치)에서 업데이트하거나 귀하가 업데이트 할 때 문제가 발생합니다. Mercurial은 hook for updates.

을 가지고 있습니다. 대안은 실제로 데이터베이스 (mysql)와 대화 할 수있는 잠재적 인 더 많은 플러그인/확장을 생성하고 더 유용한 정보를 제공 할 수 있습니다. 이 모든 것은 여러분이 파이썬에 대해 조금 알고 있는지에 달려 있습니다.

+0

단순한 단일 개발자 설정이라고 덧붙였습니다. 아무도 나로부터 업데이트하거나 바이스를 사용하지 않을 것입니다 (지금 추가했습니다). 또한 - 업데이트에 대한 덤프를 가져오고 싶지만 커밋에 대한 EXPORT 덤프도 있습니다. 어려움이 있습니다 (제 생각에는?). 수은 플러그인/확장 기능 - 파이썬 (하지만 Mercurial의 API는 아는 것)을 알고 있습니다. mysqldump/mysql이 할 수없는 것은 무엇입니까? –

관련 문제