tiktok / sparo

Sparo optimizes performance of Git operations for your large frontend monorepo.
https://tiktok.github.io/sparo/
MIT License
162 stars 8 forks source link

Is there any interest to add profile based on BUCK projects in Sparo currently it supports rush projects only right #91

Open SSanjeevi opened 3 weeks ago

SSanjeevi commented 3 weeks ago

Is there any interest to add profile based on BUCK projects in Sparo currently it supports rush projects only right

If we add a feature in Sparo to use BUCK files to create Sparo profile and so that any git repo with sparo installed will help us download the repo with benefits of Sparo - sparse checkout which will increase the performance of git operations for a mono repo.

It will download files which are linked to the buck files reference and so no need of cloning whole mono repo instead the profile with list of BUCK projects we mention in Sparo profile only will be cloned and downloaded making the git operations very faster saving developer time and make productive.

BUCK is a great tool for Mono repo, if we add support for SParo project profile settings based on BUCK file then it will solve another greater problem.

what you guys think?

Please vote with đź‘Ť for this issue if you like the idea and want it to be implemented for great use case.

chengcyber commented 3 weeks ago

Hey @SSanjeevi , thank you for bringing this topic to us!

For Sparo, Technically, we can refactor codebase to introduce something like "monorepo tool" abstraction. By doing this, I believe Sparo could be more flexible to support other monorepo tools such as BUCK, which will solve greater problem as you suggest.

For BUCK, I am new to BUCK. When I search BUCK, it brings me to the META's project BUCK. I suppose it's the right thing you are pointing to.

It seems that BUCK, the original build tool, is indeed marked as "no longer actively maintained" on the official site(https://buck.build/), with the recommendation to transition to Buck2​. Buck2 is being positioned as the faster, more reliable successor, but you may notice that it is currently labeled as “unstable and developer edition”​(https://buck2.build/). This creates a tricky situation for me trying to decide where to invest the efforts.

SSanjeevi commented 3 weeks ago

Hey @chengcyber, Yes, that's the one i was describing about. buck2 is the one new - it will be better if we support buck2. Since the buck will be deprecated and no longer maintained actively.

octogonz commented 6 days ago

if we add support for SParo project profile settings based on BUCK file then it will solve another greater problem.

Could you share a link to the specification for BUCK files?

SSanjeevi commented 6 days ago

There is a buck command to find all dependencies, hope it's same for buck2.

https://buck.build/command/query.html buck query deps

The above query should return list of folders linked to a buck project file, then we need to update those folder lists in the sparo profile this should be done on every some command which we can run before running git checkout or pull