私は Python と Django にあまり詳しくありません。継続的インテグレーションのサーバーとして Jenkins を使用しています。しかし、Jenkins がリポジトリのクローンを作成すると、一部のリビジョンが省略されます (これは自動プロセスです)。テスト/本番目的でパッケージをビルドする必要がある場合、Mercurial サーバー (リポジトリ) で確認できるのとまったく同じリビジョン番号でマークする必要があります。ファブリックを使用しています。1 つのスクリプトで Fabric と Python を組み合わせようとしました (Python の Paramiko を使用して、サード パーティの Mercurial サーバーに接続し、適切なリビジョン番号を取得します)。リビジョンは、最後のコミットの日付として、ローカル サーバー上の Jenkins が作成したパッケージから取得されます。それは簡単でした:
pipe = subprocess.Popen(
['hg', 'log', '-l', '1', '--template', '{date|isodatesec}', env.repo_dir],
stdout=subprocess.PIPE,
)
しかし、問題は Mercurial サーバーからリビジョン番号を取得することです。私はもう試した:
stdin, stdout, stderr = ssh_conn.execute('hg log -l 1 --date /"%s to %s/" --template {rev}')
...しかし、期待される結果はありません。