Sync subdirectories of a monorepo with external repos
Configuration for synced repos exists as a json file in the root of your monorepo; this allows your configuration to be versioned along with your code.
.usyncrc.json
{
"$schema": "https://raw.githubusercontent.com/uber-workflow/usync/v0.0.1/schema/.usyncrc.json",
"mapping": {
// setup directory mappings per external repo
"my-open-source-org/some-repo": {
// sync `/projects/some-repo` with root of external repo
"/projects/some-repo": "/"
}
}
}
yarn add usyncit
GH_TOKEN
Used in the remote url when cloning repos (see docs on customizing git). Must be from an account that has write access to repos in your org.
const {USync} = require('usyncit');
// provide parent monorepo name so it knows where to look
// for config and where to import into
const usync = new USync('myorg/monorepo');
yourImportWebhookHandler(async () => {
await usync.import(...);
});
yourLandWebhookHandler(async () => {
await usync.land(...);
});
See DOCS.md for full usage info.