1

svnversionドキュメントから:

[adrdec@opsynxvm0081 common_cpp]$ svnversion --help
usage: svnversion [OPTIONS] [WC_PATH [TRAIL_URL]]


作業コピー パスWC_PATHのコンパクトな「バージョン番号」を生成します。例えば:

$ svnversion . /repos/svn/trunk
4168

作業コピーが単一のリビジョンで、変更も切り替えもされておらず、URL が TRAIL_URL 引数に一致する場合、バージョン番号は単一の番号になります。作業コピーが通常と異なる場合、バージョン番号はより複雑になります:

   4123:4168     mixed revision working copy
   4168M         modified working copy
   4123S         switched working copy
   4123P         partial working copy, from a sparse checkout
   4123:4168MS   mixed revision, modified, switched working copy
4

2 に答える 2

3

このソリューションは、svnversion のように作業ディレクトリの変更を検出します。

    def get_version(self, path):
            curdir = self.get_cur_dir()
            os.chdir(path)
            version = self.execute_command("git log --pretty=format:%H -n1")[self.OUT].strip()  #get the last revision and it's comment
            status = self.execute_command("git status")[self.OUT].strip()  #get the status of the working copy
            if "modified" in status or "added" in status or "deleted" in status:
                    version += self.modified
            os.chdir(curdir)
            return version


    def execute_command(self, cmd_list):
            proc = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, shell=True)
            (out, err) = proc.communicate()
            rc = proc.returncode
            return rc, out, err   
于 2012-08-24T05:08:39.310 に答える
1

私は SVN にあまり詳しくありませんが、私が知る限り、SVN は単純な数字の形式でリビジョンを識別します: 1、2、3... Git は SSH ハッシュを使用してリビジョンを識別するため、あまりうまく変換されません。 (Git の世界では「コミット」として知られています)。ただし、これを取得するのは、次を使用して非常に簡単git logです。

git log --pretty="format:%h" -n1 HEAD

これにより、リポジトリで現在チェックアウトされているコミットが出力されます (これが HEAD です)。HEADまたは、コマンドを(またはその他のブランチ) に置き換えてmaster、作業ディレクトリを表すものではなく、そのブランチの最後のコミットを取得することもできます。さらに、完全な SHA1 が必要な場合は、%h上記をに置き換えます%Hgit-logフォーマットの詳細については、マンページを読むこともでき--prettyます。

さらに、エイリアスを追加し.gitconfigて、どこでもこれを行うことができます。次の行を追加します~/.gitconfig(ただし、そのセクションが既にある場合は省略し[alias]てください)。.gitconfig

[alias]
    rev = "git log --pretty='format:%h'"

これで、Git リポジトリにいて、現在のリビジョンを確認したいときはいつでも、 と入力するだけですgit rev

于 2012-08-24T02:09:22.113 に答える