用 Git 可以控制线上代码无注释,本地代码有注释嘛?

2019-05-29 10:14:06 +08:00
 5200
比如在本地码的代码带了很多注释,
但是想代码同步到生产环境的时候把注释全部去除,
为方便后续的改版,有没有什么好的解决方案呢。

如:第一次本地写的一个文件去注释后上线,
后续本地又修改了这个文件,
在多人维护一起用这个库的时候,
如何方便的只更新改过的代码而不带多余的注释呢,
在一个 git 库内可以实现嘛,各位大佬怎么处理这种情况的。
7891 次点击
所在节点    程序员
46 条回复
codeduan
2019-05-29 10:21:40 +08:00
这个或许不应该从 git 的角度上考虑,应该从打包工具之类上考虑吧。比如 JS 的 webpack 就可以配插件去除注释。
sbw
2019-05-29 10:22:24 +08:00
像 js css 一般都会 compress,编译型的就无所谓了吧
sonyxperia
2019-05-29 10:22:30 +08:00
代码都提交了,注释有什么见不得人的
Vegetable
2019-05-29 10:29:15 +08:00
不想让公共仓库里存在注释吗,这个逻辑很复杂,三两句都描述不清楚,难的不是去掉,而是你从仓库 pull 没有注释的代码,怎么把你的注释加回去.
比如你本地的注释在 A 行和 B 行之间,别人把 A 和 B 都删了,那你本地这个注释怎么处理,根据绝对位置肯定不行,相对定位的行又不见了.Git 没法定位这个吧

也就是说去掉注释是一个不可逆的操作,变成无注释的简单,想从无注释改为有注释的版本无法实现,单纯的去掉注释的话,办法估计很多.
isCyan
2019-05-29 10:30:12 +08:00
@Vegetable Git 会让你 手工处理吧
lihongjie0209
2019-05-29 10:30:45 +08:00
第一个是部署的问题,不是 git 的问题

第二个可以用一台中间服务器处理, 你们所有人都提交到中间的 git 服务器, git 服务器把你的注释都删除之后再次提交到你们的最终 git 服务器
liuxey
2019-05-29 10:32:09 +08:00
@Vegetable #4 言之有理,楼主再仔细琢磨下场景吧,既然不想别人看到注释,就别上传了吧,或者给编译后的包
okoook
2019-05-29 10:32:20 +08:00
// 抽奖不成功也要发送弹幕,概率 20%,造成很多人中奖的假象
Vegetable
2019-05-29 10:33:09 +08:00
仔细看了一下觉得你这个不是想在仓库里没有注释,而是在线上运行没有注释,那就是构建时做的事情,如果你们是直接将 git 代码部署到线上不做处理的话会出现你描述的问题.这时候应该加一步构建的的步骤,打包的时候去掉注释,而不在仓库里操作.
vicvinc
2019-05-29 10:34:24 +08:00
弄两个分支,一个带 comment 一个不带,开发的时候在有 comment 的分支下开发,开发完 checkout 到 none-comment 的分支,跑个 clean-comment 的脚本,commit
vicvinc
2019-05-29 10:35:24 +08:00
要么就是弄个 CI 脚本,提交到指定分支后自动清除注释
whypool
2019-05-29 10:38:03 +08:00
git:滚犊子
Sapp
2019-05-29 10:41:42 +08:00
你这个需求真的很奇葩,而且不应该是 git 去做,你可以单独配置一下 webpack,只去掉注释,打包进另一个本地文件夹,然后 git 上传这个文件夹,最后把命令串起来,就是你要的效果了
Sapp
2019-05-29 10:43:09 +08:00
而且如果你是线上没有注释的话,直接在打包发布的时候去掉注释不就行了吗?这关 git 仓库什么事?为什么要想着去掉仓库的注释
5200
2019-05-29 11:07:25 +08:00
估计只能本地编写完成,然后跑一个脚本去注释,然后再整站部署到线上了。

之前是考虑如果在一个 git 仓库里面,弄个分支,
子分支有注释,主分支无注释,
所有协同操作都在子分组进行,
当到更新功能的时候,
看子分支更新了哪些文件,然后把这些文件去注释,
替换主分支内容, 线上代码直接 git pull 一下主分支。
不过这样感觉替换和找这几个文件就比较麻烦了

项目大小比较大,逻辑代码部分感觉有 500MB++
如果每次更新小模块功能也整站去注释后部署,感觉得不偿失了。

弄两个仓库的话,A 仓库有注释,B 仓库是无注释的线上代码,
更新一个功能后,从 A 仓库整站去注释后,再将项目替换到 B 仓库。
git 就好像有个问题,同一个文件,如果去注释后代码相同,也会冒红。
不知道 git 是不是通过 md5 校验的,里面修改时间什么的也加进去校验了。
这样就相当于线上代码更新的时候要去下载这个 500MB++ 的代码,而不是只下载那几 KB 更新的文件了。
iiusky
2019-05-29 11:10:23 +08:00
你想法很危险啊,要是这样的话,公司项目后期都找不到人维护了。只有你本地有注释,去掉注释应该是在从 git 部署到生产环境的那个步骤走的。而不是上传到 git 的就是没有注释的
zhengxiaowai
2019-05-29 11:10:45 +08:00
如果是后端的话,上线带不带注释问题不大把?
前端 webpack 有插件可以去除注释自动 ugly 代码。
后端的话目前好像还没有什么现成的工具,可以通过解析 ast 删除注释后生成代码实现
huamiao
2019-05-29 11:11:47 +08:00
我感觉 LZ 需要先解释一下他的上线流程。
loading
2019-05-29 11:12:30 +08:00
建议别在 git 提交前做这个工作,你应该是自动部署时拉代码后用工具自动清理。
ReVanTis
2019-05-29 11:14:49 +08:00
自己加 hook 呗,有啥干不了的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX