У некоторых гистов на github очень много вилок. Как я могу найти самые последние активные и / или сильно измененные? - PullRequest
0 голосов
/ 09 мая 2018

Например, есть очень популярный гистограмма на ярлыках tmux с очень большим количеством вилок:

ярлыки и таблицы tmux

В данный момент эта конкретная сущность имеет 2156 вилок , поэтому другие, возможно, добавили много других полезных дополнений в свои отдельные вилки, которые никогда не сливались. Поиск всех полезных лакомых кусочков вручную всех 2156 был бы очень трудный процесс.

Есть ли способ узнать, какой из них (в порядке важности, но частичные ответы тоже в порядке):

  1. Было ли добавлено больше строк?
  2. Недавно были обновлены?

..., каким-то автоматическим способом, так что мне не нужно нажимать на каждую вилку и смотреть, как она отличается, чтобы найти «алмазы в алмазах?»

1 Ответ

0 голосов
/ 20 мая 2019

Я написал быстрый скрипт на python, основанный на предложении rob006 . Идея состоит в том, чтобы просмотреть список вилок, а затем для каждого commit_url получить ключ committed_at и распечатать результат, отсортированный по нему.

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'

df = pd.read_json('https://api.github.com/gists/2961058/forks')

df['updated'] = None
for i,j in df.iterrows():
  sub_df = pd.read_json(j['commits_url'])
  df['updated'].loc[i] = sub_df['committed_at'][0]    

print(df[['html_url', 'updated']].sort_values(by='updated', ascending=False).to_string())

Выход:

               html_url              updated
5   https://gist.github.com/4739242  2016-12-06 14:31:32
13  https://gist.github.com/5277937  2013-04-03 20:18:26
8   https://gist.github.com/4770160  2013-02-12 14:24:52
0   https://gist.github.com/4472784  2013-01-08 09:14:47
17  https://gist.github.com/5321628  2012-10-03 15:38:50
28  https://gist.github.com/5462736  2012-10-03 15:38:50
27  https://gist.github.com/5450432  2012-10-03 15:38:50
26  https://gist.github.com/5408497  2012-10-03 15:38:50
25  https://gist.github.com/5394420  2012-10-03 15:38:50
24  https://gist.github.com/5386007  2012-10-03 15:38:50
23  https://gist.github.com/5380517  2012-10-03 15:38:50
22  https://gist.github.com/5358216  2012-10-03 15:38:50
21  https://gist.github.com/5355396  2012-10-03 15:38:50
20  https://gist.github.com/5347298  2012-10-03 15:38:50
19  https://gist.github.com/5340495  2012-10-03 15:38:50
18  https://gist.github.com/5338594  2012-10-03 15:38:50
15  https://gist.github.com/5311472  2012-10-03 15:38:50
16  https://gist.github.com/5317428  2012-10-03 15:38:50
1   https://gist.github.com/4595125  2012-10-03 15:38:50
14  https://gist.github.com/5304285  2012-10-03 15:38:50
12  https://gist.github.com/5195021  2012-10-03 15:38:50
11  https://gist.github.com/5143245  2012-10-03 15:38:50
10  https://gist.github.com/4997403  2012-10-03 15:38:50
9   https://gist.github.com/4772114  2012-10-03 15:38:50
7   https://gist.github.com/4753544  2012-10-03 15:38:50
6   https://gist.github.com/4739782  2012-10-03 15:38:50
4   https://gist.github.com/4694620  2012-10-03 15:38:50
3   https://gist.github.com/4659865  2012-10-03 15:38:50
2   https://gist.github.com/4654117  2012-10-03 15:38:50
29  https://gist.github.com/5467292  2012-10-03 15:38:50

Из результатов видно, что https://gist.github.com/4739242 - самый последний обновленный форк.

Примечание: подождите некоторое время, прежде чем снова запустить скрипт. GitHub может ограничить ваш доступ, и вы получите ошибку 403, как показано ниже:

{
  "message": "API rate limit exceeded for 116.73.235.229. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
  "documentation_url": "https://developer.github.com/v3/#rate-limiting"
}

Для неаутентифицированных запросов ограничение скорости может составлять до 60 запросов в час. Неаутентифицированные запросы связаны с исходящий IP-адрес, а не пользователь, делающий запросы.

TODO:

  • Добавить аутентификацию, чтобы избежать ограничения скорости
  • Сравните разветвленную версию с оригиналом (количество слов?), Чтобы избежать существ, которые не улучшили оригинал
...