让我们说我将zsh dotfiles保存在回购中:
$ tree -a -F .
.
├── .zlogin
├── .zsh/
│ ├── some-dir/
│ │ └── another-script.zsh
│ └── some-script.zsh
└── .zshrc
我很有兴趣使用另一个项目的子目录,例如来自oh-my-zsh的目录lib
,并将其放在我的.zsh
文件夹中。
结尾的结果应该是这样的:
$ tree -a -F .
.
├── .zlogin
├── .zsh/
│ ├── lib/
│ │ ├── bzr.zsh
│ │ ├── clipboard.zsh
│ │ ├── compfix.zsh
│ │ ├── completion.zsh
│ │ ├── correction.zsh
│ │ ├── diagnostics.zsh
│ │ ├── directories.zsh
│ │ ├── functions.zsh
│ │ ├── git.zsh
│ │ ├── grep.zsh
│ │ ├── history.zsh
│ │ ├── key-bindings.zsh
│ │ ├── misc.zsh
│ │ ├── nvm.zsh
│ │ ├── prompt_info_functions.zsh
│ │ ├── spectrum.zsh
│ │ ├── termsupport.zsh
│ │ └── theme-and-appearance.zsh
│ ├── some-dir/
│ │ └── another-script.zsh
│ └── some-script.zsh
└── .zshrc
但我不想下载&复制目录,我希望能够自动更新它,而无需在我的项目上保留整个oh-my-zsh repo。我怎么能这样做?
答案 0 :(得分:1)
我有一个简单而又狡猾的答案和一个更“优雅”但复杂的答案。
我的kludgy解决方案是将整个oh-my-zsh repo放在顶级文件夹中的子模块中,如“subs”或类似的东西。然后从.zsh目录中的符号链接到lib目录...
user@host:~/.zsh> ln -s ../subs/oh-my-zsh/lib
是的,在打出这样的答案后,我觉得我应该洗手。可以说更优雅的选项涉及一个子模块的稀疏检验,其中特定文件夹设置为可见。以下是此方法的excellent explanation。
不幸的是,我不认为稀疏结账会在您的特定情况下起作用,因为您希望lib目录驻留在存储库中的.zsh目录中。据我所知,如果不将更改提交给子模块repo,则不能在子模块中拥有自己的代码。话虽如此,这是我们正在讨论的Git,Git非常神奇,可能有办法实现这一点。
如果是我,我会把它弄好并称之为好。 :)