Skip to content

tomasdelvechio/actions-push-repo-to-subdir

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sync a entire repository to another repo like subdir

This action sync a repository when pushed changes to another repository, like subdir.

Why?

I have a Repo with HTML slides and I pushed changes frequently. I also have a second repository which is also a Github Page. This action publish my commits of the first repo in the second one. In the target repository, the source will be copied like sub directory.

Arguments and variables

There are 3 required arguments:

  • ##username/repository_name##: Target repository name (not url). Show actions/checkout documentation.
  • ##commit_github_username##: User to show like Author in Github Commit
  • ##subdir_name_on_target##: Name of directory on Target Repository

You have to define the secret API_TOKEN_GITHUB in the source repo secrets section. You have define a Token here (set the repo permission).

Usage

Create an action file .github/workflows/action-sync-repos.yml in your source repo (where do you want to commit) with the next code:

on: [push]

jobs:
  sync-with-gh-page:
    runs-on: ubuntu-latest
    name: Sync this repo with GH pages
    steps:
    - name: Checkout source repository
      uses: actions/checkout@v2
      with:
        path: source-repo
    - name: Checkout target repository
      uses: actions/checkout@v2
      with:
        repository: ##username/repository_name##
        path: target-repo
        token: ${{ secrets.API_TOKEN_GITHUB }}
    - name: Sync the repo
      id: sync
      uses: tomasdelvechio/[email protected]
      with:
        github-username: ##commit_github_username##
        target-subdir-name: ##subdir_name_on_target##

Examples

Sync a repository to github page

The action file content:

on: [push]

jobs:
  sync-with-gh-page:
    runs-on: ubuntu-latest
    name: Sync this repo with GH pages
    steps:
    - uses: actions/checkout@v2
      with:
        path: source-repo
    - uses: actions/checkout@v2
      with:
        repository: pawunlu/pawunlu.github.io
        path: target-repo
        token: ${{ secrets.API_TOKEN_GITHUB }}
    - name: Sync the repo
      id: sync
      uses:  tomasdelvechio/[email protected]
      with:
        github-username: 'tomasdelvechio'
        target-subdir-name: 'slides'
  • Target Repo: pawunlu/pawunlu.github.io (A Github page repo)
  • Github Username: tomasdelvechio (Commit's author)
  • Subdir name: slides (You have this directory on the repository)

This file is created in the source repository. Example name: .github/workflows/action-sync-repos.yml.