記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索
    2010年12月03日16:40hgsubversionでとってきたけどsvnのリビジョンをしりたいとき
    hgsubversionでFreeBSD svnをもってくるのつづき。

    .hg/svn/rev_mapにhgとsvnのリビジョンの対応関係が記録されているので、これをもとに.hg/localtagsを生成すれば、-r オプションで svn のリビジョンを指定できるようになる。また hg log でタグとしてsvnのリビジョンがわかる。
    ただFreeBSDのheadをとってくると2010-12-02の時点でリビジョンが157081もあり、これを全部localtagsに変換するとhgの動作が極端に遅くなるため、直近の10000個(15分の1)にすることで実用的な範囲に収めている。
    さらに、localtagsを時系列と逆順にした方が速くなるっぽいので/usr/local/bin/gtac (in sysutils/coreutils)をつかっている。
    スクリプト:

    awk 'NF==2{print $2 " svn-r" $1}' .hg/svn/rev_map | tail -10000 | gtac >.hg/localtags
    
    使用例:
    % hg log -r svn-r216107
    changeset:   157078:17db89e84c98
    tag:         svn-r216107
    user:        lstewart@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
    date:        2010-12-02 02:32 +0000 (29 hours ago)
    summary:     General cleanup of the NewReno CC module (no functional changes):
    
    %
    


    2010-12-06追加:
    hgsubversion/hgsubversion/help/subversion.rst をみると、templateで {svnrev} がつかえるとか、リビジョン指定で -r 'svnrev(500)' とできるとか、便利になってた。
    ~/.hgrc or .hg/hgrc の例:

    [ui]
    style=~/.hgstyle
    

    ~/.hgstyleの例:
    changeset = 'changeset:   {rev}:{node|short}\nsvnrevision: {svnrev}\n{branches}{
    tags}{parents}user:        {author}\ndate:        {date|isodate} ({date|age})\ns
    ummary:     {desc|firstline}\n\n'
    changeset_quiet = '{rev}:{node|short}\n'
    changeset_verbose = 'changeset:   {rev}:{node|short}\nsvnrevision: {svnrev}\n{br
    anches}{tags}{parents}user:        {author}\ndate:        {date|isodate} ({date|
    age})\n{files}{file_copies_switch}description:\n{desc|strip}\n\n\n'
    changeset_debug = 'changeset:   {rev}:{node}\n{branches}{tags}{parents}{manifest
    }user:        {author}\ndate:        {date|isodate} ({date|age})\n{file_mods}{fi
    le_adds}{file_dels}{file_copies_switch}{extras}description:\n{desc|strip}\n\n\n'
    start_files = 'files:      '
    file = ' {file}'
    end_files = '\n'
    start_file_mods = 'files:      '
    file_mod = ' {file_mod}'
    end_file_mods = '\n'
    start_file_adds = 'files+:     '
    file_add = ' {file_add}'
    end_file_adds = '\n'
    start_file_dels = 'files-:     '
    file_del = ' {file_del}'
    end_file_dels = '\n'
    start_file_copies = 'copies:     '
    file_copy = ' {name} ({source})'
    end_file_copies = '\n'
    parent = 'parent:      {rev}:{node|formatnode}\n'
    manifest = 'manifest:    {rev}:{node}\n'
    branch = 'branch:      {branch}\n'
    tag = 'tag:         {tag}\n'
    extra = 'extra:       {key}={value|stringescape}\n'
    


    このエントリーをはてなブックマークに追加

    トラックバックURL

    コメントする

    名前
     
      絵文字