回答:
組み込みのコマンドはないため、通常は次のようにします。
#!/bin/bash
# history_of_file
#
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there's not previous version to compare it to.
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -n | {
# first revision as full text
echo
read r
svn log -r$r $url@HEAD
svn cat -r$r $url@HEAD
echo
# remaining revisions as differences to previous revision
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
その後、次のように呼び出すことができます。
history_of_file $1
svn: '.' is not a working copy svn: Syntax error in revision argument '@HEAD' svn: Syntax error in revision argument '@HEAD'
svn log --diff [path_to_file]
このように動作します!stackoverflow.com/a/24938573/3185510
あなたが説明したものとは少し異なりますが、これは実際に必要なものかもしれません:
svn blame filename
最後に変更したコミットの時刻と作成者が各行の前に付いてファイルを印刷します。
コードの変更を含むファイルの全履歴を確認したい場合:
svn log --diff [path_to_file] > log.txt
--diff
テストがあるため、svn 1.7.4にはオプションが導入されたと思いますsubversion/tests/cmdline/log_tests.py
。
--limit <number>
オプション付き。このように:svn log --diff --limit 5 [path_to_file]
を使用git-svn
してリポジトリをGitリポジトリにインポートしてから、を使用できますgit log -p filename
。これは、対応するdiffが後に続くファイルの各ログエントリを示します。
git log X..Y -o filename
皮切りに
svn log -q file | grep '^r' | cut -f1 -d' '
これにより、ファイルが変更されたリビジョンのリストが表示されます。これを使用して、への繰り返しの呼び出しをスクリプト化できますsvn diff
。
svn log -q some_file.xxx | grep ^r | awk '{print $1}' | sed -e 's/^r//' | xargs -i svn diff -rHEAD:{} some_file.xxx > ~/file_history.txt
素敵な小さなワンライナー(awkはカットと同じです)
奇妙な名前の「非難」コマンドがこれを行います。Tortoiseを使用している場合は、「リビジョンから」ダイアログが表示され、次にファイルごとにリビジョン番号と作成者の行ごとのインジケーターが表示されます。
リビジョン情報を右クリックすると、「ログの表示」ダイアログが表示され、チェックインの一部であった他のファイルとともに、完全なチェックイン情報が表示されます。
ありがとう、ベンディン。私はあなたの解決策がとても好きです。
最新の変更を最初に表示して、逆の順序で機能するように変更しました。これは、数年にわたって維持されてきた長期のコードで重要です。私は通常、それをより多くにパイプします。
svnhistory elements.py |more
ソートに-rを追加しました。スペックを削除しました。「最初のレコード」の処理。それはそれと比較するものがないので、それは最後のエントリでエラーになります。そこまで下がることはないので一緒に暮らしていますが。
#!/bin/bash
# history_of_file
#
# Bendin on Stack Overflow: http://stackoverflow.com/questions/282802
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there's not previous version to compare it to.
#
# Dlink
# Made to work in reverse order
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -nr | {
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
history_of_file $1