v0.7.1-alpha.1
Xvc Changelog
v0.7.0 (2026-01-10)
- Added automatic configuration migration for legacy
core.guidto.xvc/guidfile. - Refactored storage operations to use dynamic dispatch (
dyn XvcStorageOperations), reducing boilerplate code. - Fixed
MINIO_ACCESS_KEY_IDenvironment variable for MinIO storage credentials. - Refactored XvcConfig for a simpler structure using structs for all configuration
- Added documentation for configuration structs and their fields in
config/src/configuration.rs. - Updated
workdirhandling in CLI to use absolute paths and default to the current directory if not specified. - Fixed a bug in configuration file generation where
[check-ignore]section was incorrectly named[check_ignore].
v0.6.17 (2025-04-22)
- Added rclone storage option
- Added generic rclone storage tests
- Reexported xvc-logging, xvc-config, xvc-ecs functionality from xvc-core
- Removed lower level crate dependencies from xvc-file, xvc-pipelines, xvc-storage crates
- Added Readme files to config and ecs crates
v0.6.16 (2025-03-22)
- PR: #270
- Added xvc storage remove command
v0.6.15 (2025-02-01)
- PR: #266
- Fixed a bug preventing Xvc to be run outside of repos
- Added static nushell completions
v0.6.14 (2025-01-29)
- PR: #265
- Added command completions for subcommands and options
- Added dynamic completions for xvc_paths, storages, pipelines, pipeline steps, etc.
- Renamed xvc pipeline dag --format dot to graphviz
- Added experimental homebrew tap
v0.6.13 (2024-12-30)
- PR: #263
- Removed reflink from default features
- Hide directories in xvc file list output by default and add --show-dirs option
- Set core.quotepath=off in git ls-files call to get paths in UTF-8 to match
- Handle missing files in xvc file bring more gracefully
- Fixed git version string to also consider lightweight tags
- Fixed xvc file remove bug that panics when content digests not found
- Fixed xvc file list help text and added a test/example for ignored files
- Added more targets to Github builds
- Releases now use houseabsolute/actions-rust-cross@v0
0.6.12 (2024-11-30)
- PR: #262
- Add --include-git-files option to xvc file track and xvc file list commands
- Don't track and list Git-tracked files by default
- Add ListFormat::empty for default xvc file list format
- Expose types from
xvc::file::listto be used in GUI - Refactor
xvc file listcommand handler for Xvc GUI - Began to use dtolnay/rust-toolchain for Github Actions
- Began to use taiki-e/install-action@cargo-llvm-cov for codecov
- Fixed cache permissions issue
0.6.11 (2024-09-04)
- PR: #260
- Bump dependencies
- Replace globset with fast-glob for memory usage
- Remove --details option from xvc check-ignore
- Fixed xvc check-ignore to work with supplied paths
- Fixed loading store targets from xvc file list
- Directory targets in various commands doesn't require / at the end when they only exist in the cache
- Removed some duplicate tests from ignore
- Minio tests now use mc instead of s3cmd
- Add a step to run a subset of tests in CI for faster feedback
0.6.10 (2024-08-04)
- PR: #259
- Removed caching for globs that caused bugs in Python bindings and long running processes.
- Documentation updates
- Fix optional features. Now inter-workspace dependencies are defined by
default-features = falseon Cargo.toml - Added
bundled-opensslfeature to usevendoredfeature ofopensslcrate optionally. This is turned on for Windows builds on GA. - Crates are published from Github Actions
0.6.9 (2024-07-29)
- Added sqlite-query dependency to xvc pipelines. A step is invalidated to run when the output from an SQLite query changes.
- Moved bundled sqlite behind a feature flag, bundled_sqlite.
- Merged xvc-workflow-tests crate to the main xvc crate.
- Added compiling Xvc with non-default features document
0.6.8 (2024-07-15)
- Modifications for Python bindings
0.6.7 (2024-03-18)
- Added
xvc file sharecommand to share files from S3 signed URLs
0.6.6 (2024-01-12)
- Added
xvc pipeline step removecommand - Added
toandforas aliases to--step-nameoption inxvc pipeline step dependency - Added custom Display implementation for dependency types
0.6.5 (2024-01-01)
-
Add benchmarks between Xvc and DVC
- Add how-to/benchmark-versus-dvc.md
- Add regex filtering for how-to documents to trycmd test docs
-
Refactored Pipelines API to expose more functionality
- PR: #243
- Exposed Git operations in the API
-
Fixed
xvc pipeline step updateclobbering--whenoption -
Added
xvc pipeline step listcommand to list pipeline steps -
Updated file related operations not to list all files
- Added
XvcPathMetadataProvidertoxvc-walkerto cache file system metadata
- Added
-
Added git revision to the version stringZ
-
xvc file listdoesn't list files starting with.now.- Added
--show-dot-filesto list them.
- Added
-
Fixed
--recheck-methodto be reset to default if not specified
0.6.3 (2023-11-02)
- Updated README and added its commands to the tests
- Updated openssl dependency to use vendored feature for Python bindings
- Fixed clippy warnings
- Initial Python bindings in https://github.com/iesahin/xvc.py
0.6.2 (2023-10-13)
- Updated
xvc file trackreference and examples - Added mdbook-admonish for admonitions
- Fixed
--skip-gitoption not working correctly- Added documentation for turning off automated Git operations
- PR: #238
- Updated Readme and added it to tests
0.6.1 (2023-10-05)
- Added --min-size (-s) option to xvc-test-helper create-directory-tree
- PR: #229
- Updated
xvc pipeline dagand reference docs.- PR: #232
- Dependency and outputs are shown with different shapes according to their types in Graphviz format
- Simplify DAG creation for both dot and mermaid formats
0.6.0 (2023-08-28)
-
Major overhaul in pipelines
- PR: #224
- Added
--generic,--url,--regex-items,--line-items,--glob-itemsdependencies - as dependency types to
xvc pipeline step dependencycommand - Updated
xvc pipelinesto run the pipeline by creating a thread for each step. - Updated pipelines state machine
- Added environment variable injection to
--regex-items,--line-itemsand--glob-itemsdependencies. - Reference examples for
xvc pipeline exportandxvc pipeline import - Refactored
xvc-corecrate for digest structures - Refactored
xvc-pipelinescreate to move dependencies to files
-
Added reference examples for
xvc storage new ...commands.- PR: #222
- Issue: https://github.com/iesahin/xvc/issue/221
-
Add
xvc pipeline newreference examples.- Remove
--set-defaultoption from the command.
- Remove
-
Added reference examples for
xvc storage new ...commands.- PR: #222
- Issue: https://github.com/iesahin/xvc/issue/221
-
Add
--format mermaidtoxvc pipeline dag -
Standardize digests with AttributeDigest trait
-
Add Diffable trait to compare records and actuals
-
Refactor
xvc pipelinecomparisons to use Diff
0.5.2 (2023-02-13)
- Refactor "cache type" to "recheck method" in all code and documentation
- Issue: #203
- Renamed
CacheTypetoRecheckMethod - Revised documentation for recheck methods
- Add
xvc file untrackcommand.- Issue: #113
- Write the reference page: book/src/ref/xvc-file-untrack.md
- I believe there must be two separate commands:
xvc file untrackandxvc file remove. The former is to remove the file from Xvc tracking, and the latter is to remove the file from the workspace, cache, or storages. There are valid use cases to remove the file from cache without untracking it, and vice versa. - There will also be a
xvc file versionscommand to list the versions of a file and restore them to a directory. - I think it's better to implement remove and untrack commands in one go.
- Added
jointo AbsolutePath.- Assert the parameter is not absolute.
- Caused error in xvc init: Fixed ✅
- Caused error in updating gitignores: Fixed ✅
- Assert the parameter is not absolute.
- Error in recheck for existing paths: Fixed ✅
- XvcCachePath returns a partial path for reporting
- Change all PathBuf elements in XvcRoot to AbsolutePath
- Sort results of
--restore-versionsby entity id ✅ - Delete cache files
- Remove empty directories after untracking ✅
- I believe there must be two separate commands:
- Update book/src/start/from-dvc.md for
xvc file untrack✅
- Restructure output channel to send/receive
Option<XvcOutputLine>instead ofXvcOutputLine- Refactor all commands to use the new output channel ✅
- Add
xvc file removecommand- Add RemoveCLI and the command dispatcher ✅
- Implemented remove for local cache
- Implement
--all-versions - Implement
--only-version
- Implement
- Implement
--from-remote - Implement
XvcStorageOperations::deletefor all storage types
- Update
xvc-test-helper generate-random-fileandcreate-directory-treeto receive random seed - Update
xvc storage new localref page to include examples
0.5.1 (2023-01-28)
- Fix Build Badge in Readme
- Fixed per badges/shields#8671
- Revised Readme and added Future and Maintanence section.
- Fix EntityGenerator bug that saves even if no new entity is created
- Issue: #185
- Added test_multi_save
- Added a dirty flag to EntityGenerator
- Separated load and new behavior
- New makes the generator dirty. Load doesn't.
- Add
xvc file movecommand.- Issue: #177
- Write the reference page: book/src/ref/xvc-file-move.md
- Add
movetoXvcFileCLI - Add MoveCLI
- Refactor and split cmd_copy
- A function to get source files
- A function to map source files to destination files
- A function to perform copy operations
- A function to recheck
- Write cmd_move
- Wrote modified functions of operations and destination mapping from cmd_copy
- Other functions from cmd_copy are reused
- Add template for xvc-file-move.in
- Fixed a bug in
xvc file copyabout changed source files. xvc file move --no-recheckdeletes the source files.
- Added Giscus to the documentation
- PR: #215
- All docs pages can be commented with Giscus.
0.5.0 (2023-01-23)
- Refactor XvcEntity to
(u64, u64)- Issue: #198
- PR: https://github.com/iesahin/xvc/pulls/201
From<u128>andInto<u128>From<(u64, u64)>andInto<(u64, u64)>- Tests
- Add tests for
From<u128>andInto<u128>ecs/src/ecs/mod.rs - Fix doc tests that use
100usizeto createXvcEntity
- Add tests for
- Update the ECS documentation
- Update arch/ecs.md
- Search for any
XvcEntityreferences that may be changed
xvc-test-helperbinary is not produced at builds- Moved it from dev-dependencies to dependencies in workflow_tests/Cargo.toml
- Still doesn't work 🛑
- We need binary dependencies in cargo: https://rust-lang.github.io/rfcs/3028-cargo-binary-dependencies.html,
- It's available in nightly: rust-lang/cargo#9096
- Revert to dev-dependencies
z_test_docsfails immediately if noxvc-test-helperbinary is found.- Run the tests without
-p workflow_tests- Hypothesis: The reason the test helper binary is not produced is that we run only
workflow_testscrate. - Looks this hypothesis is not correct.
- Hypothesis: The reason the test helper binary is not produced is that we run only
- The best way seems to be adding
https://docs.rs/escargot/latest/escargot/ and building the binary before
the doc tests.- Now builds the binary before running the doc tests. ✅
- Moved it from dev-dependencies to dependencies in workflow_tests/Cargo.toml
- Write pipelines code documentation #88
- Add
xvc file copycommand- Issue: #179
- PR: #206
- Create the user interface
- Add
copytoXvcFileCLI - Created CopyCLI
- Add
- Write the documentation and doc tests:
- Write initial examples: book/src/ref/xvc-file-copy.md
- Create a fixture directory
xvc-file-copy.in
- Implement the command
- Select source
- Select destination
- Do we store directories with trailing / or not❓
- Write tests for consistency
- Added
test_xvc_path_namingproptests and modified XvcPath
constructor to accept absolute paths conditionally. ✅
- Added
- We don't store directories with trailing / ℹ️
- Write tests for consistency
- Create destination XvcPaths ✅
- Add join function to XvcPath ✅
- Create destination cache type, metadata, digest, text-or-binary ✅
- Should we create destination directory records❓
- It's better to create them to update gitignore files. ✅
- Update gitignore files in destinations
- Use update_dir_gitignore for new directories and update_file_gitignore for new files.
- Move gitignore functions from track/mod.rs to common/gitignore.rs
- Gitignore handling is actually a recheck sub-operation.
- Git doesn't mind if we don't create anything in the workspace.
- We should update gitignores in recheck, but how can we do that for
directories that may contain non-tracked files❓ - While creating files and parent directories we can update gitignores
in the parent directories.- If a directory is not already ignored in creation, we can create a gitignore with a single line
*to ignore all files. - After all files are rechecked, we can check whether they are not ignored by Git, and update necessary gitignores.
- If a directory is not already ignored in creation, we can create a gitignore with a single line
- Gitignore handling is actually a recheck sub-operation.
- Create an IgnoreWriter system with crossbeam_channels
- The channel will send/receive
Option<IgnoreOperation>messages. - If it receives a None message, it will stop and the collected
dir/files will be written to ignore files. - This pattern can be used for all operations.
- The channel will send/receive
- Split targets_from_store to receive a store struct to filter. ✅
- This is to prevent unnecessary reload in copy.
- Convert former XvcRoot type to XvcRootInner and XvcRoot to
Arc<XvcRootInner>- This is to pass the object to threads easily.
- Do we store directories with trailing / or not❓
- Updated default format string for
xvc file list- Moved
nameblock to the end of the format string ✅
- Moved
v0.4.2 (2023-01-17)
xvc file carry-in#174- PR #194
xvc file listdebugging #197- Fixed slicing bug ✅
- Recursive option
- If not given all files including the ignored files will be reported.
- Ignored files will be reported with file type
I
- Ignored files will be reported with file type
- If not given all files including the ignored files will be reported.
- Add
Gfor as a file type for git-tracked files. DX 224 2022-12-31 08:21:11 dir-0001/dir-0001 rcd \n- Fix
rcd✅
- Fix
- Count lines in the result
- I think it's better to write all of this as a doc test
- PR #194
- create a
xvc-test-helper create-directory-hierarchycommand.- Add a main.rs to xvc-test-helper ✅
- Add clap to parse CLI
- Add subcommands ✅
- create directory tree
- random dir name --prefix str --seed u64
- random temp dir --prefix str
- seeded temp dir --seed u64
- create temp dir
- run in temp dir
- run in temp git dir
- create temp git dir
- generate random file filename size
- generate filled file filename size byte
- generate random text file filename num_lines
- Add to doc-tests
- added with
cargo_bin!✅ - began to add
xvc-file-list.md- Open doc test results in a directory
- Use neovim for this
- Open doc test results in a directory
- It looks we need to update directory permissions in the cache too
- updated move_to_cache function
- fix recheck errors
- it looks recheck doesn't check whether the file is changed before trying to checkout
- do we use
--text-or-binaryoption to update the file?- removed the option from help text ✅
- I think we need a
DEBUGlevel in XvcOutput for otherwise irrelevant information- Added debug option to XvcOutputLine
- Changed all noisy output to debug! ✅
- fix
carry-inerrors- updated outputs
- there seems to be a bug to update the stores
- add watches for several places.
- the bug was about missing configuration keys.
- it must warn/panic when the keys are not there.
- all machinery is there, it must report error, but doesn't.
- it must warn/panic when the keys are not there.
- there seems to be a bug in xvc list output about cached/workspace sizes
- yes, there was. fixed the summary. ✅
- added with
- started moving
test_file_list.rsto document test.--recheck-asoption must be introduced instead of--cache-type.- there is a bug in
trackwhen--cache-typeis given. 🐛- pmm doesn't contain directory contents
- fixed ✅
- pmm doesn't contain directory contents
- the sorting for timestamp and size are not working
- fixed ✅
- if a field is blank or None, it should print spaces.
- Done for size and timestamp ✅
- Why the cache size is empty when they are not reported
- Fixed. Loads the rec content digests always now. ✅
- We need more tests for other sorting options to increase coverage perhaps.
- removed older tests and added only the sorting test to xvc file list wf tests
- tests in ref md is larger than this file anyway.
- Listing only the changed.
- As a status command.
- Add subcommands ✅
- Fix
xvc file hashtests- create directory tree needs an option to create random files or filled files
- update all uses ✅
- modify test helper to have this option ✅
- create directory tree needs an option to create random files or filled files
- Fix
xvc file listtests- Fix counting and sorting tests ✅
- Could we have file, line, function etc in panic! / error! macros?
- Modified and did this ✅
- Fix
xvc file recheck paralleltests- There is a failing command, which one?
- It looks like a plain recheck after hardlink
- The target permissions should be removed
- The bug seems to be in
xvc file track- There is a gitignore bug
- Fixed it by using the targets directly
- There is a gitignore bug
- The failure is in cleanup, about permissions.
- Delete files and directories one by one
- Deleted by shell ✅
- Delete files and directories one by one
- There is a failing command, which one?
- Fix
xvc root--debugshould only determine the xvc.log output- changed output in
run_xvcfn ✅
- changed output in
- Fix
xvc pipeline exporttests- There must be sorting in the output, as we changed the stores to HStore ✅
- Fix
xvc pipeline importtests- The same changes, ordering of elements changed ✅
- Fix
xvc pipeline runtests- The example repository again and again ✅
- Fix
xvc storage generic fstests- Where is the actual error?
- It was about removing the repos
- Where is the actual error?
- Fix
xvc storage localtests ✅- Cache operations from storages should be done on temp dir and move to cache must be used for all
- This is to keep permission operations correct
- I did this in the trait ✅
- Modified all receive functions to return a temp dir ✅
- Cache operations from storages should be done on temp dir and move to cache must be used for all