Mercurial hooks를 사용하여 버전 작성을위한 데이터베이스 덤프 생성/로드

StackOverflow https://stackoverflow.com/questions/1449177

문제

Drupal Project 소스 파일을 버전 제어에 Mercurial을 사용하기 시작했습니다 (저는 VCS 및 Mercurial Newbie 모두). 그러나 데이터베이스는 여전히 .sql.gz 파일의 디렉토리를 사용하여 "버전 제어"입니다.

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

나는 수동으로 그것을했는데 효과가 있었다. 그러나 내가 정말로 좋아하는 것은 각 커밋/업데이트에서 덤핑/로드를 자동으로 수행하는 것입니다. 나는 Tortoisehg의 도구로 작업하는 것을 좋아하기 때문에 먼저 데이터베이스를 덤프 한 다음 커밋하는 Makefile과 같은 외부의 것보다 Mercurial에 연결되는 것을 정말로 선호합니다.

이제, 그것은 그런 것 같습니다 mysql .... < dumpfile.sqlupdate 후크는 각 업데이트 후 데이터베이스 덤프를로드하는 쉬운 방법입니다. 그러나 자동 덤핑은 어떻습니까?

거기가 있었다 비슷한 질문 SVN의 사전 커밋 훅에 대해, 받아 들여진 대답은 아마도 나쁜 생각 일 것입니다. 수은에 적용됩니까? 아마도 다른 후크 (prechangegroup?) 작동 할 것이다?

편집하다:

나는 내 지역 기계에서 혼자서 그것을 사용하고 있음을 지적해야합니다. 단일 사용자를 넘어 확장해서는 안됩니다.

도움이 되었습니까?

해결책

데이터베이스를 pre-commit 훅. 사용하지 않도록주의하십시오 precommit Hook, 다른 것이기 때문에 (거래 내부에서 실행).

일반적으로 각 명령에 대해 (update, commit, 등) pre-<command> 명령이 실행되기 전에 후크가 실행됩니다.

다른 팁

이것이 업데이트 작업에 더 가깝게 보입니다. 나는 당신이 데이터베이스에서 작업하고 있고 의도적으로 SQL 스키마를 내보내기로 선택하고 커밋했다고 가정합니다. 다른 사람이 귀하 (또는 다른 위치)로부터 업데이트하거나 업데이트 할 때 문제가 발생합니다. Mercurial은 a 업데이트를위한 후크.

대안은 실제로 데이터베이스 (MySQL)에 디렉토리를 이야기하고 더 유용한 정보를 제공 할 수있는 자체 수은 플러그인/확장자를 만드는 것입니다. 이것은 모두 약간의 파이썬을 아는 당신에 달려 있습니다.

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