使用 Git 管理 iTunes 库?

使用 Git 管理 iTunes 库?

我一直在考虑使用 Git 来管理我的 iTunes 库并允许我在计算机之间同步它。

你能想到任何理由来证明这是一个坏主意吗?

答案1

主要缺点是磁盘空间。存储库本身将占用与“签出”文件集相同的空间。这意味着当您克隆存储库时,您的集合基本上将占用两倍的磁盘空间。

更糟糕的是,即使您删除不再需要的文件,您的存储库中仍然会有副本,占用空间。

您可能需要查看以下同步工具齐奏它是为跨多台机器实现文件双向同步而设计的。

答案2

你能想到任何理由来证明这是一个坏主意吗?

Git 不适合这样的用法。

git 的工作方式是将存储库数据保存在.git/文件夹中。对于文本,这不是问题,它可以轻松压缩,并且文件很小 - 存储库可能只有一两兆字节。

压缩数据(MP3、JPEG 等)无法通​​过 git 进一步压缩,而且由于您实际上需要存储两份数据副本,这将使所需的磁盘空间增加一倍(一份用于文件,一份用于存储库)

文本很小,而且可压缩,重要的是,您可以轻松地在两个修订版本之间“区分” - 仅存储更改。如果您只更改一行,git 只会存储该行(以及任何相关元数据,如提交消息)

二进制文件很难区分,所以假设你修改了 100 个文件的标签(例如,添加艺术品或更改流派),git 会在其.git/目录中存储这些文件的新副本。假设你从音乐的元数据中删除所有评论,git 会存储文件的另一份完整副本!这意味着你的存储库现在将是你实际文件大小的两倍多(假设你有 10GB 的音乐,你的音乐文件夹现在将超过 30GB)

正如我所说,git 不适合做这样的事情 - 它旨在跟踪源代码,对文本文件进行大量小改动,而不是大型二进制文件。当你需要一个同步工具时,保留音乐库的修订历史就没什么意义了。

由于您正在考虑使用 git,我认为您对命令行工具已经足够满意,因此我建议您研究使用 rsync 在机器之间同步 iTunes 库。正如 joshhunt 提到的,最大的问题是 iTunes 使用媒体文件的绝对路径,因此文件iTunes Library.xml包含以下内容..

<key>Location</key>
<string>file://localhost/Users/dbr/Music/iTunes/iTunes%20Music/65daysofstatic/Hole/01%20Hole.mp3</string>

如果您在所有机器上使用相同的操作系统和相同的用户名,这不是问题 - 将文件保存在同一路径中,它应该可以正常工作。如果不是,事情会变得有点复杂。

您可以编写两个脚本,一个用于更新从 machineA 到 machineB 的路径,另一个用于更新从 machineB 到 machineA 的路径。您可以将 iTunes 资料库移动到某个位置,这样/User/Shared/Music/路径就相同了(尽管这可能不适用于 OS X -> Windows)

有一些实用程序可以在机器之间同步 iTunes 库,例如......

(从本文

答案3

我不确定 Git 是否会对音乐库中的文件大小产生问题(它对大文件的处理效果不佳,但我不确定具体有多大),但 Joey Hess 写了一个名为git 附件用于处理这种用例。

答案4

此设置的另一个问题是 iTunes 将其数据库存储为专有二进制文件,git 无法对其进行合并(不,iTunes 不会读回对 iTunes Music Library.xml 文件的编辑)。因此,如果您在两台机器上都更改了元数据或添加了其他曲目,则无法协调两端所做的更改,最终会用一个版本的数据库覆盖另一个版本,并在此过程中丢失数据。

相关内容