Skip to content

Commit

Permalink
add list of personal repositories that non-owners are pushing to
Browse files Browse the repository at this point in the history
Find personal repositories that non-owners are pushing to.
These kind of repositories should be moved into organizations.
Only look at active users (not suspended!) and only look at pushes
of the last 4 weeks.
  • Loading branch information
Lars Schneider committed Jan 26, 2018
1 parent 74fce70 commit 53003ad
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/_data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
url: "/housekeeping-git-requests"
- title: "API Requests"
url: "/housekeeping-api-requests"
- title: "Personal Non-Owner Push"
url: "/housekeeping-repo-personal-non-owner-push"
- title: "Forks"
url: "/housekeeping-forks"
- title: "Recommendations"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
repository
alice/something
bob/else
4 changes: 4 additions & 0 deletions docs/demo-data/repositories-personal-non-owner-push.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
date personal repositories with non-owner pushes
2018-01-25 98
2018-01-24 108
2018-01-23 110
37 changes: 37 additions & 0 deletions updater/reports/ReportReposPersonalNonOwnerPush.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from .ReportDaily import *

# Find personal repositories that non-owners are pushing to.
# These kind of repositories should be moved into organizations.
# Only look at active users (not suspended!) and only look at pushes
# of the last 4 weeks.
class ReportReposPersonalNonOwnerPush(ReportDaily):
def name(self):
return "repositories-personal-non-owner-push"

def updateDailyData(self):
self.detailedHeader, self.detailedData = self.parseData(self.executeQuery(self.query()))
if len(self.data) == 0:
self.header = ["date", "personal repositories with non-owner pushes"]
self.data.append([str(self.yesterday()), len(self.detailedData)])
self.truncateData(self.timeRangeTotal())
self.sortDataByDate()

def query(self):
query = '''
SELECT
CONCAT(users.login, "/", repositories.name) as "repository"
FROM
repositories
JOIN users ON repositories.owner_id = users.id
JOIN pushes ON pushes.repository_id = repositories.id
WHERE
users.type = "user"
AND users.suspended_at IS NULL
AND pushes.created_at > DATE_SUB(NOW(), INTERVAL 4 WEEK)
AND pushes.pusher_id != users.id
GROUP BY
repositories.id
ORDER BY
1
'''
return query
2 changes: 2 additions & 0 deletions updater/update-stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from reports.ReportPRUsage import *
from reports.ReportRepoActivity import *
from reports.ReportRepositoryHistory import *
from reports.ReportReposPersonalNonOwnerPush import *
from reports.ReportTeamsTotal import *
from reports.ReportTokenlessAuth import *
from reports.ReportUsers import *
Expand Down Expand Up @@ -93,6 +94,7 @@ def main():
ReportPRUsage(configuration, dataDirectory, metaStats).update()
ReportRepoActivity(configuration, dataDirectory, metaStats).update()
ReportRepositoryHistory(configuration, dataDirectory, metaStats).update()
ReportReposPersonalNonOwnerPush(configuration, dataDirectory, metaStats).update()
ReportTeamsTotal(configuration, dataDirectory, metaStats).update()
ReportTokenlessAuth(configuration, dataDirectory, metaStats).update()
ReportUsers(configuration, dataDirectory, metaStats).update()
Expand Down

0 comments on commit 53003ad

Please sign in to comment.