質問: タイトルのままなのですが、bitbucketで、自分のアカウント内の全てのリポジトリに対して、一定期間内に行われたコミットを検索・把握したいです。 ※「特定のコミットのソースコードを検索」ではなく、「一定期間内に行ったコミットを把握したい」ということです。 やりたいこと ------ bitbucketで、自分のアカウント内の全てのリポジトリに対して、一定期間内に行われたコミットを把握したいです。 期間は、2018年1月1日~2018年3月31日、のような感じ。 目的 -- 自分の過去の活動を振り返るため。 リポジトリの数 ------- bitbucketのアカウント内には35個のリポジトリがあります。全て私の個人開発のモノです。なお、コミットした人は私以外に存在しません。 やってみたこと ------- 虫メガネマークをクリックしてみたものの、単純なソースコードの文字列検索しかやり方がわかりませんでした。。。 ![虫メガネマーク](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1776a3f1496ab293ae9808e08d8746d5.png) お優しい方、いらっしゃいましたらお教え頂ければと思います。 どうぞよろしくお願い致します!
回答: こんにちは。優しいかどうかはさておき....。 標準の検索フォームでは、あまり細かい検索ができないようですね。 コミットのデータを抽出する場合ですが、SaaSのBitbucketだと、REST APIが使えます。 プログラミング的に実施するなら、この方が面白い気はします。 ただ、そこまでは必要ないということでしたら、以下は参考程度にご覧いただけるといいなと思います。 **参考:** * Bitbucket API / リポジトリごとのcommit取得 * How do I filter list of commits from REST API v2 ### REST APIを使う場合 ただし、「ユーザの全てのコミット」を表示してくれるエンドポイントが無いので、以下のような流れになるかなぁと思います。 **1. ご自身のリポジトリを取得** * https://api.bitbucket.org/2.0/repositories/アカウント名/ でリポジトリ一覧のJSONが返る **2. リポジトリごとにコミットを抽出** * https://api.bitbucket.org/2.0/repositories/アカウント名/リポジトリ名/commits ただし、残念ながら2のリポジトリごとのコミットを返すエンドポイントも、サーバ側で日付でフィルタしてくれる機能が無いみたいです。(関連の2番目のリンクを参照のこと) なので、もしやるとしたら、コミットを取ってきてから、手元で “date” というキーワードでフィルタをかけるのがいいのかなあと思います。 実際は、APIを叩く際には認証ヘッダがいると思いますが、公開リポジトリに関しては認証無しでデータが取れるので、ためしに私のを叩いたサンプルを添えてみます。 (リポジトリを指定してcommitを取得、手元で jqを使って2016-05-01より後のコミットのみ抽出) ``` curl https://api.bitbucket.org/2.0/repositories/akiko_pusu/redmine_issue_templates/commits?q=date+%3E+2015-10-30 | jq '.values[] | select(.date > "2016-05-01") | [.message, .hash, .date]' ``` ``` [ "Update README to note repository was moved.", "c7021d7adb826fa36f203175cb7bd31f45aba204", "2016-06-23T14:49:41+00:00" ] [ "Merged in feature/github-pr-1-update-zh.yml (pull request #12)\n\nUpdate zh.yml.", "59fcde4c9934bef40aa8f741c92b113209addf9e", "2016-05-16T12:42:54+00:00" ] [ "Close branch feature/github-pr-1-update-zh.yml", "f45c8d44aa8aa01eeac0f56e039d351710518b9e", "2016-05-16T12:42:54+00:00" ] [ "Update zh.yml. (Thanks to Steven.W)", "741d1f1b0229de9ec140f8027d6e2ae2b9baaff1", "2016-05-16T11:53:05+00:00" ] ```