sifive / wit

Workspace Integration Tool
Apache License 2.0
23 stars 13 forks source link

Add a wit workspace level insteadOf and pushInsteadOf. #243

Open davidmlw opened 4 years ago

davidmlw commented 4 years ago

Wit workspace is very useful to compose a mult-repo workspace. A user may not have access to write to all of the repos, and the repo names in the manifest are hard-coded to public repos. A wit update action will let the user lost all modifications. That would prevent users to modify and try the public repos, which also prevents users to file PRs for the public repos.

If there is a wit workspace level insteadOf table, a user can remain the original git URLs in the wit-manifest tree and modify everything. And now the push and pull actions happens in the user's own repos. When all the work is done, the snap shot of the workspaced can easily be filed as PRs to individual public repos.

And there could be pullInsteadOf and PushInstreadOf.

  1. In pullInsteadOf, there could be a list of related repos, and wit uses git to fetch them all and checkout the correct commit.
  2. PushInstreadOf is easy, the users can setup each repo manually themselves.
davidmlw commented 4 years ago

git config include may provide some help and users can setup his own workspace. https://git-scm.com/docs/git-config#_includes

davidmlw commented 4 years ago

insteadOf helps a lot. I met one issue that, wit update-dep is too clever to do the insteadOf too, will change the wit-manifest.json according to the insteadOf, even the orgin is the orginal one.