[解決済み] Subversion のコミット作者のユーザ名の一覧を取得するには?
質問
私は、SVN リポジトリ全体、または与えられたリソースパスのためのユニークなコミット作者のリストを取得する効率的な方法を探しています。私はこのために特別に SVN コマンドを見つけることができませんでした (そして、それを期待していません)。しかし、私がターミナル (OS X) でこれまで試したものより良い方法があるかもしれないと期待しています。
svn log --quiet | grep "^r" | awk '{print $3}'
svn log --quiet --xml | grep author | sed -E "s:</?author>::g"
これらのどちらかは一行につき一人の著者名を与えてくれますが、どちらもかなりの量の余分な情報をフィルタリングする必要があります。また、同じ著者名の重複を扱わないので、少数の著者による多くのコミットに対して、大量の冗長性がワイヤー上を流れています。私は多くの場合、ユニークな作者のユーザ名を見たいだけなのです。(実際には があるかもしれません。 を推測するのは便利ですが、このような場合であっても、代わりに集計されたデータが送信されればよりよいでしょう)。
私は通常、クライアントのみのアクセスで作業しているので
svnadmin
コマンドはあまり役に立ちませんが、必要であれば、厳密に必要であればリポジトリ管理者に特別なお願いをすることができるかもしれませんし、はるかに効率的です。私が作業しているリポジトリには何万ものコミットと多くのアクティブ ユーザーがおり、誰にも迷惑をかけたくありません。
どのように解決するのですか?
重複をフィルタリングするために、出力を取ってパイプに通す。
sort | uniq
. このように
svn log --quiet | grep "^r" | awk '{print $3}' | sort | uniq
あなたが尋ねたことを行うための方法であるとしても、私は驚かないでしょう。 Unixのツールはしばしば、ユーザーが他のツールで派手な処理や分析を行うことを期待します。
P.S. そういえば、マージして
grep
と
awk
...
svn log --quiet | awk '/^r/ {print $3}' | sort | uniq
P.P.S. Kevin Reid につきまして...
svn log --quiet | awk '/^r/ {print $3}' | sort -u
P 3 .S. kan によると、スペースを含む名前を適切に処理するために、フィールドの区切り文字としてスペースの代わりに縦棒を使用します (Python の例も更新しました)...
svn log --quiet | awk -F ' \\\\|' '/^r/ {print $2}' | sort -u
もっと効率的にするには、Perlのワンライナーでやるといいでしょう。 私はPerlをよく知らないので、結局Pythonでやってしまいますが。
#!/usr/bin/env python
import sys
authors = set()
for line in sys.stdin:
if line[0] == 'r':
authors.add(line.split('|')[1].strip())
for author in sorted(authors):
print(author)
あるいは、カウントが欲しければ
#!/usr/bin/env python
from __future__ import print_function # Python 2.6/2.7
import sys
authors = {}
for line in sys.stdin:
if line[0] != 'r':
continue
author = line.split('|')[1].strip()
authors.setdefault(author, 0)
authors[author] += 1
for author in sorted(authors):
print(author, authors[author])
そうすると、実行するのは
svn log --quiet | ./authorfilter.py
関連
-
[解決済み] SVNエラー - 作業コピーではありません
-
[解決済み] git commitの代わりに行った "git commit --amend "を元に戻すには?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] 特定のファイルを変更したすべてのコミットを一覧表示するには?
-
[解決済み] Git で古いコミットのタイムスタンプを変更するにはどうしたらいいですか?
-
[解決済み] コミットメッセージを変更せずに(以前のものを再利用して)コミットを修正する方法は?
-
[解決済み] Subversionでファイルを無視するにはどうしたらいいですか?
-
[解決済み] Subversionで既にコミットされたログメッセージを編集するには?
-
[解決済み] アイテムをリビジョンに更新する vs リビジョンに戻す
-
[解決済み] バージョンコントロールのリポジトリはどのように整理されていますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ローカルでの編集を戻さずにsvn追加を元に戻す
-
[解決済み] svn.exeは私のマシンのどこにあるのでしょうか?
-
[解決済み] SVNで直近の10件のコミットを逆時系列で見るには?
-
[解決済み] TortoiseSVN でソース管理からフォルダを削除するにはどうしたらいいですか?
-
[解決済み] TortoiseSVN 保存パスワードの抽出
-
[解決済み] なぜバージョン管理を使う必要があるのですか?[クローズド]
-
[解決済み] SVN 405 メソッドが許可されていない
-
[解決済み] WinMergeでSVNフォルダを無視するには?
-
[解決済み] svn update "コマンドを発行する前に、リポジトリから何が更新されるかを確認するにはどうすればよいですか?
-
[解決済み] フォルダがロックされており、解除できません。