比方说,一个项目 ~/my-project
,有三个代码库:
本地仓库 ~/my-project/.git
个人 GIT 服务器 git remote add my-server ssh://user@my-server:/home/my-project
公司 /甲方 服务器 git remote add company-server ssh://user@company-server:/home/my-project
要保持本地仓库与个人 GIT 服务器上的代码一致,但提交给与公司 /甲方服务器上的代码为魔改后的代码
目前是,本地代码 push 到公司服务器之前,运行一个脚本,对代码进行一些魔改(比如替换某些变量名),同样的,从公司服务器 poll/fetch 下来代码后,再运行另一个脚本进行反向操作,去掉代码的魔改(把变量名恢复),然后本地编写代码,下次再 push 时,再次魔改,周而复始。
然而如此操作的话,会有诸多不便,比方说,当 git diff 比较本地代码与公司服务器远程代码时,比较的是未魔改的代码与魔改后的代码,会提示大量无用信息。
有无方便的操作方式?
1
msg7086 2021-05-06 18:11:19 +08:00 via Android
魔改进分支,每次 rebase 主干。
|
2
ch2 2021-05-06 18:55:09 +08:00
在你的场景下,最简单的是把要对比的代码先 clone 到本地,改回来(到未魔改的版本)再对比
|
3
AoEiuV020 2021-05-06 19:08:05 +08:00
有点理解不能,给公司的代码增加复杂度降低可读性以提高自身不可替代性?
按你的例子,比较本地代码与公司代码前把本地魔改一下不就可以了, |
4
HankAviator 2021-05-06 20:51:57 +08:00
多建分支,早建分支,多用分支
|
5
Mutoo 2021-05-06 20:55:51 +08:00
应该把可变化的部分抽象出来,使用环境变量或者配置文件来控制。而不是什么魔改,给自己增加心智负担。
|
6
xuanbg 2021-05-06 20:59:19 +08:00
push 到个人服务器后再魔改,然后 push 到甲方服务器,最后本地删掉,从个人服务器上面 clone 回来???
|
7
janus77 2021-05-06 22:00:37 +08:00
你所说的魔改是固定规则吗?
你需要的是“实时”吗? |
8
Anybfans 2021-05-06 22:50:45 +08:00
感觉这些是不是可以写成配置?
代码是一套的。然后配置不一样? |
9
Jirajine 2021-05-06 23:01:29 +08:00 via Android
这样应该不要用分支,rebase 也不行吧,历史记录里还是有原始代码。
应该搞一个单独的仓库,从你源仓库同步过去以后再混淆,然后再把这个仓库推到公司服务器。这样和你自己的历史记录也可以隔离开,可以攒一大堆修改,混淆后只向公司提交一个 commit 。 另外仅仅混淆变量名是不够的,推荐进修一下 https://coderlmn.github.io/frontEndCourse/unmaintainable.html 有效降低效率减少内卷。 |
10
joesonw 2021-05-07 08:26:51 +08:00 via iPhone
git format-patch master --stdout > my-patch-file.patch
做成 patchfile 每次 apply 一下 |
11
williamx 2021-05-07 08:34:23 +08:00 via Android
一个本地仓库不行,搞两个。一个是真实的开发仓库,一个是仅上传给甲方的仓库。
|
12
jones2000 2021-05-07 13:50:58 +08:00
魔改的库直接派生你基础的库, 需要定制的直接就虚函数重载写不就可以了. 做一个类工厂, 实例化的时候根据需要创建基础的库 还是魔改的库.
|
13
unco020511 2021-05-07 17:18:06 +08:00
我觉得这个场景非常符合 fork 的开发模式
|