- bin
- deps
- sqlite
- assets
日常写的时候,假设主要内容都在 bin 里面,deps 里的依赖内容多且杂,sqlite 经常变动,而 assets 里都是 binary 大文件。
实际场景下,不是这么简单的三个文件夹,而是各有若干个。这里是简化类型。
于是 git 的时候,我是直接 ignore 了 deps 和 assets 的部分。git 的时间颗粒比较细。
但是在较大时间跨度,比如一个月一次的时候,想把其它部分也备份一下。现在用的方法是手动每月复制一份。
请问如果在这种不同的颗粒度的情况下,大家习惯怎么处理?
一种是不用 ignore,还是在总目录下 git,但各个目录分别 commit 。不过这样的话总感觉有点彆扭。
或者双开,再来个 SVN ?但也就两个而已。
期望的场景是,开发类 /依赖类 /数据类,能分别 git 到三个独立的部分。( assets 就还是手动备份算了)但因为它们都在一个主目录下,git 好像不能这么干吧?
也是个假设的场景,是我在玩 Homeassistant 时碰到的问题,大家随便聊聊。
1
coderluan 2020-04-15 17:40:06 +08:00
Submodule 不行吗?
|
2
zu1k 2020-04-15 17:40:53 +08:00 via Android
git submodule
|
3
GM 2020-04-15 17:42:35 +08:00 1
submodule 太难用了,别用。
|
4
FHXISDOG 2020-04-15 17:46:52 +08:00
添加一个新的远程仓库,git remote add xxx
|
5
yanqiyu 2020-04-15 17:54:31 +08:00 via Android
这其实就是 submodule 的典型用途
但是 submodule 确实太麻烦 你更新了 submodule 的仓库之后还要更新外面的仓库 |
6
tairan2006 2020-04-15 17:58:14 +08:00
其他部分用 dropbox 自动同步,反正你只要最新的,也不需要版本管理吧
|
7
JCZ2MkKb5S8ZX9pq OP submodule 的确有点麻烦,而且有些东西在根目录下面,切分起来也不大方便。
|
8
GreyYang 2020-04-15 18:21:45 +08:00
比较复杂的项目可以参考 Android 的 Repo & Gerrit, 可以满足管理多个 git 仓的需求, 但是本身也引入了复杂度. https://source.android.com/setup/develop#repo
|
9
crz 2020-04-15 18:30:00 +08:00
可以指定 git dir, 或者 work tree, 同一个目录对应多个 git dir,每个 git dir 分别设置 exclude
缺点是 exclude 每个客户端都要设置 |
10
cmdOptionKana 2020-04-15 18:34:56 +08:00
依赖和大文件本来就不应该用 git 吧?用别的备份方式就好了。
|
11
bog 2020-04-15 18:40:09 +08:00 via Android
你是需要 git lfs 吗
|
12
james122333 2020-04-15 18:46:49 +08:00 via Android
硬派实现啊 写脚本差不多
|
13
SilentDepth 2020-04-15 18:56:00 +08:00
除了 Git Submodule 还有更好的办法?
麻烦的问题可以靠脚本和 Alias 解决 |
14
vevlins 2020-04-15 18:59:40 +08:00
感觉你之所以分开同步只是因为文件太大懒得时刻保持同步,不想更新的时候就不 git add 不就得了嘛,需要的时候再 add + commit + push 。
git submodules 有些大材小用了吧? 楼上的 lfs 还合理点,没用过,听说也有坑,我们公司做美术的还是习惯 svn 。 |
15
basstk 2020-04-15 18:59:51 +08:00
同意 4 楼说的添加一个新的远程仓库,没测试过,应该可以
|
16
JCZ2MkKb5S8ZX9pq OP @vevlins
也不完全是,因为 homeassistant 本身结构不像我的示例这么清晰。 根目录下也有不少文件。这也是 submodule 不太方便的地方。 一部分是我的设备和自动化等等的配置文件。这部分是改完就 git 。 同时还有很多第三方插件,这个就类似 deps,比如第三方更新了,一般来说向下兼容,但偶尔也会出错。但这部分就希望跟我自己的配置分开 git 。因为更新时间不定,而且很杂,而且也都不是我的代码。 另外还有它运行中自己的 sqlite 和其它一些 log 之类的东西。 这些部分混在一起。我目前是主要备份自己写的代码,其它 ignore 。 偶尔 homeassistant 版本升级之类的,大都能兼容。但万一不兼容,有时候懒得搞就想直接回退或者比较一下差异啥的,就想要个 git,但是希望和自己写的部分能区分开。 --- 另外比如自己的网站,其实也差不多,外部依赖的 js 我会分版本存一份。万一不兼容,老项目就直接指到老版本了。但那个结构比较清晰,所有第三方 js 单独丢一个目录,备份起来也就还好。实在不行还有外部 cdn 之类的。 --- 美术的确是 svn 好点。最终用图 svn,源文件定期手动硬盘备份。 |
17
wangyzj 2020-04-16 00:35:46 +08:00
写一个 shell
每个月第一天手动 add 一下 |
18
27 2020-04-16 00:47:11 +08:00
本项目 ignore deps 文件夹
把文件夹 ln -s 或用 crontab 定时复制到另一个 git repo |
19
msg7086 2020-04-16 02:49:31 +08:00 via Android
git 可以干但是这种场景似乎不是 git 该干的活。最好还是单独做备份工作。
|
20
reus 2020-04-16 09:35:24 +08:00 via Android
临时删掉.gitignore 文件不就行了,提交之后再放回去。
|
21
no1xsyzy 2020-04-16 15:50:43 +08:00
@reus #20 我楞是没明白你这工作流是什么样的……
在同一个 branch 里?就算 ignore 了,commit -a 或者 add . 都是会添加曾经 commit 过的文件的。 |
22
xingheng 2020-04-16 16:03:30 +08:00
submodule 不行的话,还可以 subtree 嘛
|