it-swarm-ja.com

Githubで特定のコード行を最初に追加したコミットを見つけます

Githubでホストされているディープラーニングライブラリ caffesolver.cpp に次のコード行を追加したコミットを見つけたいと思います。私は寄稿者ではないか、特別な許可を持っていません。それ、どうやったら出来るの?

template <typename Dtype>
void SGDSolver<Dtype>::ClipGradients() {
  const Dtype clip_gradients = this->param_.clip_gradients();
  if (clip_gradients < 0) { return; }
  const vector<shared_ptr<Blob<Dtype> > >& net_params = this->net_->params();
  Dtype sumsq_diff = 0;
  for (int i = 0; i < net_params.size(); ++i) {
    if (this->net_->param_owners()[i] < 0) {
      sumsq_diff += net_params[i]->sumsq_diff();
    }
  }
  const Dtype l2norm_diff = std::sqrt(sumsq_diff);
  if (l2norm_diff > clip_gradients) {
    Dtype scale_factor = clip_gradients / l2norm_diff;
    LOG(INFO) << "Gradient clipping: scaling down gradients (L2 norm "
        << l2norm_diff << " > " << clip_gradients << ") "
        << "by scale factor " << scale_factor;
    for (int i = 0; i < net_params.size(); ++i) {
      if (this->net_->param_owners()[i] < 0) {
        net_params[i]->scale_diff(scale_factor);
      }
    }
  }
}
5
pir

まず、リポジトリをマシンに複製する必要があります。

git clone https://github.com/BVLC/caffe.git

git-blame を使用して、特定の行を誰がコミットしたかを確認します。

git blame -L 123,123 path/to/file.cpp

または、行の範囲については、-L 100,150などを使用します。行が移動したかどうかを検出するオプション-Mが必要な場合があります。

コミットログ全体に git-log を使用することもできます。

git log -L 123,123:path/to/file.cpp
4
slhck

説明ではなく、この質問のtitleに具体的に応答する(質問のタイトルに似た検索フレーズをグーグルで検索すると、ここに表示されます)、次のことをお勧めします。

リポジトリをマシンに複製します。

git clone https://github.com/BVLC/caffe.git

次に、gitログで、検索語が存在するすべてのコミットを検索します。

git log -S searchTerm

最後に、最も古いコミットのみを表示するために出力を調整します。これは、その特定の行が最初に追加された:のコミットである必要があるためです。

git log -S searchTerm | tail -4
1
samjewell