2016-02-27 3 views
7

同僚が書いたコードを確認していますが、Alembicの移行ファイルに含まれる移行IDがファイルの名前と一致しないことに気付きました。ファイル18b6422c9d3f_some_migration.pyは、私の同僚は、これが起こったのかわからない、と他のリビジョンのすべてのファイルの名前は自分のリビジョンIDと並ぶように見えるalembicはマイグレーションファイルをどのように呼びますか?

revision = 'c4218d61f026' 

が含まれています。私の正気のために、ファイルの名前をリビジョンIDに合わせて変更したいと思います。

Alembic revision IDs don't hold any real semantic valueが明らかであるように見え、ファイルの名前を変更しても何も破壊されていないようです。私は引き続き、移行を前後に実行できます。しかし、私はAlembicにはかなり不慣れで、これが安全であることを確認したいと思います。

もし私がgit mv 18b6422c9d3f_some_migration.py c4218d61f026_some_migration.pyに長期間の問題が予想されるのですか?

+2

これは問題ありません。私はファイル名が重要ではないと考えています。それは、真実の源であるファイルに定義されたIDです。 – univerio

答えて

8

revision変数がリビジョンIDに設定されていれば、リビジョンファイルの名前を変更することもできます。

リビジョンIDは新しく生成されたリビジョンファイルの名前の前に付加されますが(残りは移行を説明するコメントから派生しています)、versionsディレクトリ内のすべてのPythonファイルは、コレクションリビジョンIDとリンクそれらの間の。

The tutorial言う:

アレンビックは、バージョン/ディレクトリに対する操作を実行するたびに、 それはすべてのファイルを読み込み、 down_revision識別子はdown_revisionと、一緒にリンクする方法に基づいてリストを構成します 最初のファイルを表すなし。

コード(バージョン0.8.5、alembic/script/base.pyScript._from_filename方法)を見ては、スクリプトがリビジョンIDがために決定することができる任意のファイルからロードされ、リビジョンIDを内部に設定されている場合ことがわかりますスクリプトファイルであれば、ファイル名にはまったく関係なく使用されます。リビジョンIDが明示的に設定されていない場合にのみ、ファイル名の先頭から読み込まれることが期待されます。このロジックはバージョン0.2以降に存在しているようです。

1

質問に対する具体的な回答はです。はい、長期的な問題なしで移行の名前を変更できます。事実、実際のリビジョンIDについて混同しないようにすると、長期的な問題が発生する可能性が高くなります。

ファイル名にリビジョンIDがあることは、特定のリビジョンを含むファイルを見つけやすくするために、誤ってラベル付けされたファイルを使用すると、数か月で簡単に無効にすることができます。

リビジョンIDはコミットハッシュに非常に似ていますが、マイグレーションファイルの名前はコミットメッセージと考えることができます。個人的には、マイグレーションファイルの名前を変更して名前をより有用なものにすることがありました。自動生成された名前は時には醜いか、自動生成の長さの制約のためにメッセージのキービットを省略することがあります。

関連する問題