Hello everyone,

Coming back to the thread. Apache Beam project solved the problem in a slightly 
different way than we did in Airflow, and I think it might be a bit better, so 
maybe that can lead to a recommendation from the INFRA.

https://github.com/apache/beam/pull/13670

Rather than cloning the whole repository to a new repo in 'apache' they copied 
and committed the action code into .github/actions/ folder in their project. 
This is great when it comes to reviewing the code and any changes incoming 
(because they go through regular review process and all the code is in). 

Also it is really nice approach if you want to quickly modify the action - you 
can do it all as part of the PR where you test it.

It has a drawback of slightly more complex case when you want to upgrade to a 
newer version of the action, but it can be easily handled if you use subrepo: 
https://github.com/ingydotnet/git-subrepo.

We've used subrepo extensively in a few projects and I really like it. It 
allows to turn linked repositories (and changes incoming) into single 
'squashed' commits that land as 'subdirectory" in you repository. And the 
subrepo records the source of the 'subrepo' (location and commit), so if you 
want to update to another version, it will automatically get only the commit 
that changed since your previous pull. 

The code is committed together with your code (so as opposed to submodules you 
do not have to pull the repo separately). What's even more, when you make local 
changes, it will also allow you to make PR out of that to include it in the 
upstream code. So you can easily make your local modification and subrepo will 
keep track of that and allows also to merge it with the incoming changes if you 
want to upgrade to newer version..

I plan to switch to this approach in apache-airflow, and maybe that could be 
recommended approach for all projects. With this approach it is actually even 
easier to test and try certain actions (especially if you need to modify them) 
than if you use action in another repository.









Reply via email to