Create GitHub Commits Feed
User Intent
"How do I sync GitHub commits from a repository? Show me GitHub Commits feed configuration."
Operation
SDK Method: createFeed() with FeedTypes.Commit
Auth: GitHub personal access token or OAuth
Code Example (TypeScript)
import { Graphlit } from 'graphlit-client';
import {
FeedTypes,
FeedServiceTypes,
GitHubCommitsFeedPropertiesInput,
GitHubCommitAuthenticationTypes,
GitHubRepositoriesInput,
} from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Use the GitHub credential stored in the Developer Portal
const authorizationId = process.env.GRAPHLIT_GITHUB_AUTH_ID!;
const repositoriesInput: GitHubRepositoriesInput = {
authenticationType: GitHubCommitAuthenticationTypes.OAuth,
authorizationId,
};
// Enumerate repositories this credential can access
const repositoriesResponse = await graphlit.queryGitHubRepositories(repositoriesInput);
const repositories = repositoriesResponse.githubRepositories?.results ?? [];
if (repositories.length === 0) {
throw new Error('No GitHub repositories available for the authorized account');
}
const { repositoryOwner, repositoryName } = repositories[0]!;
console.log(`Using GitHub repository: ${repositoryOwner}/${repositoryName}`);
const feed = await graphlit.createFeed({
name: 'Backend API Commits',
type: FeedTypes.Commit,
commit: {
type: FeedServiceTypes.GitHubCommits,
github: {
authorizationId,
authenticationType: GitHubCommitAuthenticationTypes.OAuth,
repositoryOwner: repositoryOwner!,
repositoryName: repositoryName!,
branch: 'main', // Optional: defaults to default branch
readLimit: 100,
},
},
// Optional: add workflow for content processing
// workflow: { id: workflow.createWorkflow.id }
});
console.log(`Created GitHub Commits feed: ${feed.createFeed.id}`);Configuration
repositoryOwner: GitHub username or organization
repositoryName: Repository name
authorizationId: Stored GitHub credential identifier (OAuth recommended)
authenticationType: GitHubCommitAuthenticationTypes.OAuth or GitHubCommitAuthenticationTypes.PersonalAccessToken
branch: Specific branch to sync (defaults to repository's default branch)
readLimit: Number of commits to sync (defaults to 100)
GitHub Token Setup
Developer Portal → Connectors → GitHub
Complete OAuth flow with required scopes (
repofor private repos, public repo access for public repos)Store the resulting credential; note the
authorizationIdUse
queryGitHubRepositoriesto confirm repository access before creating feeds
What Gets Synced
Commit SHA hashes
Commit messages
Author information and dates
Committer information and dates
Branch information
Parent commit SHAs
File change statistics (files changed, additions, deletions)
Associated pull request numbers (if applicable)
Labels and tags
Use Cases
Code Review Analysis:
repositoryOwner: 'your-org',
repositoryName: 'backend-api',
branch: 'develop'Developer Activity Tracking:
repositoryOwner: 'facebook',
repositoryName: 'react',
branch: 'main',
readLimit: 500Commit History Search:
repositoryOwner: 'company',
repositoryName: 'monorepo',
// No branch specified - uses default branchOAuth vs Personal Access Token
Use OAuth when:
Building multi-user applications
Need user-specific permissions
Want connector-based auth with automatic token refresh
Use Personal Access Token when:
Single-user automation
Service account access
Simpler setup for personal projects
Metadata Structure
Each synced commit creates content with CommitMetadata:
sha: Commit hashmessage: Commit messageproject: Repository nameteam: Repository ownerbranch: Branch nameparentShas: Array of parent commit SHAsfilesChanged: Number of files modifiedadditions: Lines addeddeletions: Lines deletedpullRequestNumber: Associated PR number (if applicable)authorDate: When the commit was authoredcommitterDate: When the commit was committedlabels: Associated labels/tags
Related
GitHub Pull Requests Feed - Sync pull requests
GitHub Issues Feed - Sync repository issues
GitHub Repository Feed - Sync repo files
Last updated
Was this helpful?