Come posso garantire la ripetibilità del codice Julia e le dipendenze associate?
Supponiamo che io abbia un progetto in cui sto eseguendo l'analisi (ovvero non sto cercando di sviluppare un pacchetto condivisibile) ma voglio assicurarmi che altri possano clonare il repository e istanziare le dipendenze ed eseguire il codice come scritto.
Passi che ho fatto finora:
- Codice creato nella sua cartella
- Ha reso quella cartella un ambiente Julia (
activate .
nella modalità pacchetto del REPL) add
ed i pacchetti che sto usando
Questo blocca le versioni delle dipendenze? O devo aggiungere manualmente [compat]
voci al Project.toml
file? Se gli [compat]
entreis sono necessari, c'è un modo per includere automaticamente quella voce quando si add
invia il pacchetto?
Esiste un approccio globale per garantire la riferibilità?
Risposte
Questo blocca le versioni delle dipendenze?
Se commetti il tuo Project.toml
e Manifest.toml
poi qualcuno può clonare il repository, attiva quel progetto e import Pkg; Pkg.instantiate()
scarica le stesse identiche versioni registrate nel manifest.
Questo blocca le versioni delle dipendenze?
Sì, nel senso che le versioni esatte sono registrate nel Manifest.toml
file quindi finché quel file non viene modificato sono bloccati.
O devo aggiungere manualmente
[compat]
voci alProject.toml
file?
Non devi farlo. Ciò è importante solo quando qualcuno esegue un'operazione sul pacchetto che richiama il resolver, ad esempio pkg> add ...
o pkg> up
. Se il tuo codice si basa su una versione specifica di un pacchetto, puoi sempre aggiungerlo alla [compat]
sezione. Ad esempio, se ti affidi a una funzionalità che richiede la X
versione del pacchetto 1.3.0, puoi aggiungere
[compat]
X = "1.3"
Ciò assicurerà che, anche se qualcuno invoca il risolutore di pacchetti, otterrai almeno la versione 1.3 di package X
.