7/3/2023 0 Comments Git annex vs lfs![]() ![]() For instance, if you store a Photoshop image file (PSD) in a repository, with every change, the complete file is stored again in the history. In that case, while I would be correct about my point 2, at least it is only a "problem" of the server (in terms of space), but not on my local disk space and also not for the internet bandwidth usage. Git LFS Git is very good and keeping track of changes in text-based files like code, but it is not that good at tracking binary files. ![]() So mid to large video game projects in git I would rather avoid. People constantly forgot to update the module reference and sometimes it wouldnt be obvious. We had a game that shared code between server and client and it was very messy. Only if I checkout the respective version of the large file, the files is downloaded. The problem with Git is that some things cant be done due to its nature, like LFS, and proper referencing. I understand from here that git-lfs keeps most of the (near) copies of my file in the remote storage. So, how does this improve the situation compared to git? I still get lots of (near) copies of this big file. In DVC, it seems that if I change a large file, just like in git, a snapshot of that file is created (not a delta saved). What is the advantage of using DVC then regarding this aspect? Can't I just use git and just not use those mechanisms? So, git's reconciliation-capabilities are not really required. However, since it is only a reference, there is not much merging to be done by git anyways. In DVC, the reference is a text file and thus, git will not get confused. I will use DVC as a stand-in, as I know even less about the other two. If I still need them in my project, I should use something like DVC, git-annex, git-lfs.Īs far as I understand, all three of those keep the those other files outside of git, and keep a reference, which is tracked by git. Thus files should be small.įiles that are either large or binary (or both), they should not be tracked by Git. If one makes a change, even a small change, to a large file, the entire files will be stored twice by git. If I change a version controlled file, git does not save the delta between those files, but safes and entire snapshot of the file. It is praised among its users but there is a consensus that Git LFS wins for the following reasons: When a team member or outsider clones a repo with Git LFS enabled, they dont need to know that before hand. However, in order to do the reconciliations, e.g., in a merge, git requires access to the "inside" of the file. git-annex was a bigger player in the early days of Git LFS, but has since been beat out. If I have different versions of a file, e.g., in different branches, and I try to reconcile those, git will has great mechanisms for that. ![]()
0 Comments
Leave a Reply. |