{"id":19863860,"url":"https://github.com/sandialabs/repometer","last_synced_at":"2025-07-24T00:06:25.440Z","repository":{"id":142395585,"uuid":"481257891","full_name":"sandialabs/Repometer","owner":"sandialabs","description":"Online version control platforms offer insights into traffic and engagement with source code repositories, but only in limited ways and over short windows of time. Scientific software teams at Sandia and elsewhere want to collect and store engagement data to help tell their story and the impact their work has on the community. Repometer aims to supplement existing capabilities by collecting timely and insightful data from GitHub and GitLab repositories and passing it to a database for longer-term storage.","archived":false,"fork":false,"pushed_at":"2022-04-13T15:00:31.000Z","size":111,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T00:26:02.317Z","etag":null,"topics":["scr-2767","snl-applications","snl-data-analysis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandialabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-04-13T14:49:43.000Z","updated_at":"2024-02-20T19:03:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"28f61b17-38dc-4eb4-b026-64519c8f3002","html_url":"https://github.com/sandialabs/Repometer","commit_stats":{"total_commits":4,"total_committers":2,"mean_commits":2.0,"dds":0.5,"last_synced_commit":"ee940938367ff03b39e2bb8f70719c541a5e393f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sandialabs/Repometer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FRepometer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FRepometer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FRepometer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FRepometer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandialabs","download_url":"https://codeload.github.com/sandialabs/Repometer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FRepometer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266770728,"owners_count":23981615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["scr-2767","snl-applications","snl-data-analysis"],"created_at":"2024-11-12T15:16:20.625Z","updated_at":"2025-07-24T00:06:25.421Z","avatar_url":"https://github.com/sandialabs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Repometer\n\n\u003cimg src=\"repometer/images/repometer_squarefit_transparent.png\"  width=\"150\" height=\"150\"\u003e\n\nOnline version control platforms offer insights into traffic and engagement with\nsource code repositories, but only in limited ways and over short windows of\ntime. Scientific software teams at Sandia and elsewhere want to collect and\nstore engagement data to help tell their story and the impact their work has\non the community. Repometer aims to supplement existing capabilities by collecting\ntimely and insightful data from GitHub and GitLab repositories and passing\nit to a database for longer-term storage.\n\n## Requirements\nThe required packages for this utility can be found in the\n[Requirements file](requirements.txt).\n\n### Database Connection\nThe utility requires a properly created database to which the data collected\ncan be passed and stored. We have included a file with the necessary schema\nfor this database in `repometer/database/repometer_database.sql`.\n\nTo use this script (for a MySQL database):\n```\n$ mysql -u username -p database_name \u003c repometer_database.sql\n```\n\n### Database Credentials\nThe utility also requires the placement of a configuration file for the database \nin the `repometer/database/` directory of the format:\n\n``` \n\"\"\"\nrepometer/database/config.py\n\"\"\"\n\nconfig = {\n    'user': username,\n    'password': password,\n    'host': hostname,\n    'database': databasename\n}\n\n```\nIf you intend to use the `backup_database` routine, this also requires a configuration file\nfor the database in the `repometer/database/` directory of the format:\n```\n\"\"\"\nrepometer/database/backup_config.py\n\"\"\"\n\nconfig = {\n    'user': username,\n    'password': password,\n    'host': hostname,\n    'database': databasename\n}\n\n```\n\n**WE HIGHLY RECOMMEND STORING THESE CREDENTIALS IN A SEPARATE, ACCESS-CONTROLLED\nREPOSITORY.**\n\n## Install\nClone this repository to your local machine, `cd` into the repository, and run:\n```\n$ python setup.py install\n```\nIf you'd prefer to use the package in a development format, instead run:\n```\n$ python setup.py develop\n```\n\n## Usage\nThis package can be initiated via a convenient console command:\n```\n$ repometer -h\n\nusage: repometer [-h]\n{addclient, removeclient, addrepository, removerepository, showdata, collectdata, status}\n...\n\nThe main function for Repometer. Type 'repometer COMMAND --help'\nto get information about a particular command.\n\noptional arguments:\n    -h, --help            show this help message and exit\n\ncommands:\n    {addclient, removeclient, addrepository,\n        removerepository, showdata, collectdata, status}\n\n```\nEach of the seven commands has its own arguments. For example:\n```\n$ repometer addclient --help\n\nusage: repometer addcustomer[-h] Customer_Name\n\nAdd a customer to the database.\n\npositional arguments:\n    Customer_Name\n\n```\n\n## Testing\nThere are extensive unit tests included with this package which are powered\nby `pytest`. The unit tests require the regular `config.py` files, as listed\nabove, but also require a `repometer/tests/config.py` file (sample included)\nwith the following dictionaries:\n\n```\n\"\"\"\nINCORRECT DB NAME\n\"\"\"\ndatabase = 'incorrect name'\nhost = ''\nuser = ''\npassword = ''\n\nincorrect_DBname_config = {\n    'user': user,\n    'password': password,\n    'host': host,\n    'database': database\n}\n\n\"\"\"\nINCORRECT HOST NAME\n\"\"\"\ndatabase = ''\nhost = 'incorrect host'\nuser = ''\npassword = ''\n\nincorrect_Hostname_config = {\n    'user': user,\n    'password': password,\n    'host': host,\n    'database': database\n}\n\n\n\"\"\"\nINCORRECT USERNAME\n\"\"\"\ndatabase = ''\nhost = ''\nuser = 'incorrect user'\npassword = ''\n\nincorrect_Username_config = {\n    'user': user,\n    'password': password,\n    'host': host,\n    'database': database\n}\n\n\"\"\"\nINCORRECT PASSWORD\n\"\"\"\ndatabase = ''\nhost = ''\nuser = ''\npassword = 'incorrect password'\n\nincorrect_Password_config = {\n    'user': user,\n    'password': password,\n    'host': host,\n    'database': database\n}\n\n\"\"\"\nEVERYTHING CORRECT\n\"\"\"\ndatabase = ''\nhost = ''\nuser = ''\npassword = ''\n\ncorrect_config = {\n    'user': user,\n    'password': password,\n    'host': host,\n    'database': database\n}\n```\n\n**WE HIGHLY RECOMMEND STORING THESE CREDENTIALS IN A SEPARATE, ACCESS-CONTROLLED\nREPOSITORY.**\n\n## Copyright Notice\n\nCopyright 2022 National Technology \u0026 Engineering Solutions of Sandia, LLC\n(NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S.\nGovernment retains certain rights in this software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandialabs%2Frepometer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandialabs%2Frepometer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandialabs%2Frepometer/lists"}