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/dev
local 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>#branch
but that fails and says to try usingadd
with 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.toml
doesn’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!