I’m running into issues with what I think is a pretty common workflow and looking for advice on how to manage this workflow. My situation is:
- I’m working on a Julia project - in this case a Genie app
- I need to modify one of my dependencies to add features/fix a bug etc. I’ve been doing this from Pkg using
dev <dependency>then modifying the source in~/.julia/dev/<dependency> - I want to be able to develop on a different machine using my modified copy of the dependency. Ideally, this would be as easy as opening a project with unmodified dependencies.
What’s the best way to track modified dev dependencies across different machines? Things I’ve tried include:
- Fork the dependency on Github. Add fork as origin for
~/.julia/devlocal copy of package. Push local changes to branch of fork. - Remove official package with
rm <dependency>then add forked copy withadd <fork of dependency>#branch. Ideally I want to usedev <fork of dependency>#branchbut that fails and says to try usingaddwith a local repo instead. Using add would require me to manually clone all modified dependencies to the same spot on a new machine as best I can tell so I’d like to avoid that if possible. Project.tomldoesn’t seem to store package source URLs or branch info and I’m currently git ignoringManifest.toml, so my other dev machine has no way to track modified dependencies.
What’s the best way to manage this workflow? Should I be committing Manifest.toml? Should I be using pkg add instead of pkg dev and including dependencies as git submodules of my project?
Thanks for any tips!