DVC and version control systems other than Git

Hi @Krysiul !

Thank you for considering dvc! I hope you don’t mind me citing a question that has been asked before:

DVC uses Git for things such as:

  1. adding files tracked by dvc to .gitignore for user comfort;
  2. once calling git add after dvc init for user comfort;
  3. iterating git branches to retrieve information about used dvc files and metrics(e.g. dvc push --all->branches and dvc metrics show --all-branches );

That is pretty much it. User does all the other git add -ing and git commit -ing. Dvc stores information about your data in plain yaml files that are committed by user to git.

DVC doesn’t generally require Git, it can even work without any SCM system(use dvc init --no-scm for that) if you don’t need those there features listed above. We have thought about supporting other SCMs and thus left a possibility to easily extend the list of supported SCMs by simply adding a proper driver to https://github.com/iterative/dvc/blob/master/dvc/scm.py (see Git class as an example). So it should be pretty easy to support Hg. I’ve added https://github.com/iterative/dvc/issues/945 to track the progress on it, we will be sure to take a look at it in the nearest future. That being said, if you wish to contribute a patch, please feel free to do so, we will be happy to merge it! :slightly_smiling_face:

So yes, you could indeed just add corresponding entries to hgignore yourself after dvc init --no-scm and then be adding every data file cached by dvc to appropriate hgignrore, but it would be a much better and easier solution to simply contribute a simple patch for dvc to support hg.

Thanks,
Ruslan

2 Likes