I'm currently writing a small database of git reps and im wondering how i would go ahead and get the date of the latest commit if i have the rep listed in my database.
I've never worked with the github API and im having a bit of a hard time wrapping my head around it.
If anyone could help me figure it out i'd much appreciate it. PHP or JS prefereably as all the examples ive found has been in ruby.
I'm currently writing a small database of git reps and im wondering how i would go ahead and get the date of the latest commit if i have the rep listed in my database.
I've never worked with the github API and im having a bit of a hard time wrapping my head around it.
If anyone could help me figure it out i'd much appreciate it. PHP or JS prefereably as all the examples ive found has been in ruby.
Share Improve this question asked Apr 24, 2015 at 10:40 Martin HobertMartin Hobert 2031 gold badge3 silver badges10 bronze badges 5 |3 Answers
Reset to default 10Old question but I wanted to point out (at least with api v3) you could use the branches api to get the latest commit date for a particular branch. I assume in your case you're interested in master.
Which would look like:
https://api.github.com/repos/:owner/:repo/branches/master
See https://developer.github.com/v3/repos/branches/
If you were to use PHP like your example, I'd use cURL
instead of file_get_contents
, as you'd need to configure allow-url-fopen.
GitHub also requires you to send a user-agent
in the header: https://developer.github.com/v3/#user-agent-required
For example, your PHP code would look like;
$objCurl = curl_init();
//The repo we want to get
curl_setopt($objCurl, CURLOPT_URL, "https://api.github.com/repos/google/blueprint/commits");
//To comply with https://developer.github.com/v3/#user-agent-required
curl_setopt($objCurl, CURLOPT_USERAGENT, "StackOverflow-29845346");
//Skip verification (kinda insecure)
curl_setopt($objCurl, CURLOPT_SSL_VERIFYPEER, false);
//Get the response
$response = curl_exec($objCurl);
print_r( json_decode($response, true) );
Note: You will be able to continue using file_get_contents
and send the user-agent
header. See this answer
I wanted to answer this exact question so I made a very small demo of how to get the date of the latest commit.
Demo
Output:
ta-dachi
master
2019-03-21T14:50:22Z <----- What you want
b80126c3ea900cd7c92729e652b2e8214ff014d8
https://github.com/ta-dachi/eatsleepcode.tech/tree/master
Github repo
index.html
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>React Local</title>
<script
type="application/javascript"
src="https://unpkg.com/[email protected]/umd/react.production.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/[email protected]/umd/react-dom.production.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/[email protected]/dist/fetch.umd.js"
></script>
</head>
<body>
<div id="root"></div>
<script type="text/jsx" src="index.jsx"></script>
</body>
index.jsx
/**
* See https://developer.github.com/v3/repos/branches/#get-branch
*
* Example Github api request:
* https://api.github.com/repos/ta-dachi/eatsleepcode.tech/branches/master
*/
class LatestCommitComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
author: "",
branch: "",
date: "",
sha: "",
link: ""
};
}
componentDidMount() {
// Replace this with your own repo
// https://api.github.com/repos/:owner/:repo/branches/master
fetch(
"https://api.github.com/repos/ta-dachi/eatsleepcode.tech/branches/master"
)
.then(response => {
response.json().then(json => {
console.log(json);
this.setState({
author: json.commit.author.login,
branch: json.name,
date: json.commit.commit.author.date,
sha: json.commit.sha,
link: json._links.html
});
});
})
.catch(error => {
console.log(error);
});
}
render() {
return (
<div>
<div>{this.state.author}</div>
<div>{this.state.branch}</div>
<div>{this.state.date}</div>
<div>{this.state.sha}</div>
<div>{this.state.link}</div>
</div>
);
}
}
ReactDOM.render(<LatestCommitComponent />, document.getElementById("root"));
curl -X GET -H "Cache-Control: no-cache" https://api.github.com/repos/<username>/<repo>/commits
– ʰᵈˑ Commented Apr 24, 2015 at 11:17