V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsdisp
V2EX  ›  程序员

git,如何操作,使得 push 给远程的为魔改后的代码

  •  
  •   einsdisp · 2021-05-06 18:10:01 +08:00 · 2338 次点击
    这是一个创建于 1304 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比方说,一个项目 ~/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 比较本地代码与公司服务器远程代码时,比较的是未魔改的代码与魔改后的代码,会提示大量无用信息。

    有无方便的操作方式?

    13 条回复    2021-05-07 17:18:06 +08:00
    msg7086
        1
    msg7086  
       2021-05-06 18:11:19 +08:00 via Android
    魔改进分支,每次 rebase 主干。
    ch2
        2
    ch2  
       2021-05-06 18:55:09 +08:00
    在你的场景下,最简单的是把要对比的代码先 clone 到本地,改回来(到未魔改的版本)再对比
    AoEiuV020
        3
    AoEiuV020  
       2021-05-06 19:08:05 +08:00
    有点理解不能,给公司的代码增加复杂度降低可读性以提高自身不可替代性?

    按你的例子,比较本地代码与公司代码前把本地魔改一下不就可以了,
    HankAviator
        4
    HankAviator  
       2021-05-06 20:51:57 +08:00
    多建分支,早建分支,多用分支
    Mutoo
        5
    Mutoo  
       2021-05-06 20:55:51 +08:00
    应该把可变化的部分抽象出来,使用环境变量或者配置文件来控制。而不是什么魔改,给自己增加心智负担。
    xuanbg
        6
    xuanbg  
       2021-05-06 20:59:19 +08:00
    push 到个人服务器后再魔改,然后 push 到甲方服务器,最后本地删掉,从个人服务器上面 clone 回来???
    janus77
        7
    janus77  
       2021-05-06 22:00:37 +08:00
    你所说的魔改是固定规则吗?
    你需要的是“实时”吗?
    Anybfans
        8
    Anybfans  
       2021-05-06 22:50:45 +08:00
    感觉这些是不是可以写成配置?
    代码是一套的。然后配置不一样?
    Jirajine
        9
    Jirajine  
       2021-05-06 23:01:29 +08:00 via Android
    这样应该不要用分支,rebase 也不行吧,历史记录里还是有原始代码。
    应该搞一个单独的仓库,从你源仓库同步过去以后再混淆,然后再把这个仓库推到公司服务器。这样和你自己的历史记录也可以隔离开,可以攒一大堆修改,混淆后只向公司提交一个 commit 。

    另外仅仅混淆变量名是不够的,推荐进修一下 https://coderlmn.github.io/frontEndCourse/unmaintainable.html

    有效降低效率减少内卷。
    joesonw
        10
    joesonw  
       2021-05-07 08:26:51 +08:00 via iPhone
    git format-patch master --stdout > my-patch-file.patch
    做成 patchfile 每次 apply 一下
    williamx
        11
    williamx  
       2021-05-07 08:34:23 +08:00 via Android
    一个本地仓库不行,搞两个。一个是真实的开发仓库,一个是仅上传给甲方的仓库。
    jones2000
        12
    jones2000  
       2021-05-07 13:50:58 +08:00
    魔改的库直接派生你基础的库, 需要定制的直接就虚函数重载写不就可以了. 做一个类工厂, 实例化的时候根据需要创建基础的库 还是魔改的库.
    unco020511
        13
    unco020511  
       2021-05-07 17:18:06 +08:00
    我觉得这个场景非常符合 fork 的开发模式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2587 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:59 · PVG 10:59 · LAX 18:59 · JFK 21:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.