1
codeduan 2019-05-29 10:21:40 +08:00 2
这个或许不应该从 git 的角度上考虑,应该从打包工具之类上考虑吧。比如 JS 的 webpack 就可以配插件去除注释。
|
2
sbw 2019-05-29 10:22:24 +08:00
像 js css 一般都会 compress,编译型的就无所谓了吧
|
3
sonyxperia 2019-05-29 10:22:30 +08:00 2
代码都提交了,注释有什么见不得人的
|
4
Vegetable 2019-05-29 10:29:15 +08:00 2
不想让公共仓库里存在注释吗,这个逻辑很复杂,三两句都描述不清楚,难的不是去掉,而是你从仓库 pull 没有注释的代码,怎么把你的注释加回去.
比如你本地的注释在 A 行和 B 行之间,别人把 A 和 B 都删了,那你本地这个注释怎么处理,根据绝对位置肯定不行,相对定位的行又不见了.Git 没法定位这个吧 也就是说去掉注释是一个不可逆的操作,变成无注释的简单,想从无注释改为有注释的版本无法实现,单纯的去掉注释的话,办法估计很多. |
6
lihongjie0209 2019-05-29 10:30:45 +08:00
第一个是部署的问题,不是 git 的问题
第二个可以用一台中间服务器处理, 你们所有人都提交到中间的 git 服务器, git 服务器把你的注释都删除之后再次提交到你们的最终 git 服务器 |
8
okoook 2019-05-29 10:32:20 +08:00 via iPhone 31
// 抽奖不成功也要发送弹幕,概率 20%,造成很多人中奖的假象
|
9
Vegetable 2019-05-29 10:33:09 +08:00
仔细看了一下觉得你这个不是想在仓库里没有注释,而是在线上运行没有注释,那就是构建时做的事情,如果你们是直接将 git 代码部署到线上不做处理的话会出现你描述的问题.这时候应该加一步构建的的步骤,打包的时候去掉注释,而不在仓库里操作.
|
10
vicvinc 2019-05-29 10:34:24 +08:00
弄两个分支,一个带 comment 一个不带,开发的时候在有 comment 的分支下开发,开发完 checkout 到 none-comment 的分支,跑个 clean-comment 的脚本,commit
|
11
vicvinc 2019-05-29 10:35:24 +08:00
要么就是弄个 CI 脚本,提交到指定分支后自动清除注释
|
12
whypool 2019-05-29 10:38:03 +08:00
git:滚犊子
|
13
Sapp 2019-05-29 10:41:42 +08:00
你这个需求真的很奇葩,而且不应该是 git 去做,你可以单独配置一下 webpack,只去掉注释,打包进另一个本地文件夹,然后 git 上传这个文件夹,最后把命令串起来,就是你要的效果了
|
14
Sapp 2019-05-29 10:43:09 +08:00
而且如果你是线上没有注释的话,直接在打包发布的时候去掉注释不就行了吗?这关 git 仓库什么事?为什么要想着去掉仓库的注释
|
15
5200 OP 估计只能本地编写完成,然后跑一个脚本去注释,然后再整站部署到线上了。
之前是考虑如果在一个 git 仓库里面,弄个分支, 子分支有注释,主分支无注释, 所有协同操作都在子分组进行, 当到更新功能的时候, 看子分支更新了哪些文件,然后把这些文件去注释, 替换主分支内容, 线上代码直接 git pull 一下主分支。 不过这样感觉替换和找这几个文件就比较麻烦了 项目大小比较大,逻辑代码部分感觉有 500MB++ 如果每次更新小模块功能也整站去注释后部署,感觉得不偿失了。 弄两个仓库的话,A 仓库有注释,B 仓库是无注释的线上代码, 更新一个功能后,从 A 仓库整站去注释后,再将项目替换到 B 仓库。 git 就好像有个问题,同一个文件,如果去注释后代码相同,也会冒红。 不知道 git 是不是通过 md5 校验的,里面修改时间什么的也加进去校验了。 这样就相当于线上代码更新的时候要去下载这个 500MB++ 的代码,而不是只下载那几 KB 更新的文件了。 |
16
iiusky 2019-05-29 11:10:23 +08:00
你想法很危险啊,要是这样的话,公司项目后期都找不到人维护了。只有你本地有注释,去掉注释应该是在从 git 部署到生产环境的那个步骤走的。而不是上传到 git 的就是没有注释的
|
17
zhengxiaowai 2019-05-29 11:10:45 +08:00
如果是后端的话,上线带不带注释问题不大把?
前端 webpack 有插件可以去除注释自动 ugly 代码。 后端的话目前好像还没有什么现成的工具,可以通过解析 ast 删除注释后生成代码实现 |
18
huamiao 2019-05-29 11:11:47 +08:00
我感觉 LZ 需要先解释一下他的上线流程。
|
19
loading 2019-05-29 11:12:30 +08:00
建议别在 git 提交前做这个工作,你应该是自动部署时拉代码后用工具自动清理。
|
20
ReVanTis 2019-05-29 11:14:49 +08:00 via Android
自己加 hook 呗,有啥干不了的
|
21
5200 OP @iiusky 有子分支是有注释,只是线上代码去注释, 部署是通过 Jenkins 拉主分支。
@zhengxiaowai 是后端,emm 他们就是想想上线的代码不带注释。。 @loading 单独处理一次是没问题,之后后续更新功能后,不想整站都拉一边,后端有什么好的工具嘛? |
22
dobelee 2019-05-29 12:33:19 +08:00 via Android
加个 post-receive 钩子不就搞定了?
|
23
love 2019-05-29 13:24:21 +08:00
用 hook, push 上去的时候把注释原地加密,pull 的时候解密
|
25
Raymon111111 2019-05-29 15:10:58 +08:00
1 楼说的对
再想想 git 是干嘛用的 |
26
no1xsyzy 2019-05-29 15:27:04 +08:00
每次更新代码后先 reset 再 pull,再运行一次清除注释。
|
27
BreezeInWind 2019-05-29 15:30:40 +08:00 via Android
@okoook 哈哈哈让我想起了穷逼 VIP
|
28
no1xsyzy 2019-05-29 15:33:21 +08:00
但是讲道理有点爆笑了,因为你想用(不一定完整的) git 历史
> 这样就相当于线上代码更新的时候要去下载这个 500MB++ 的代码,而不是只下载那几 KB 更新的文件了。 你又想没注释,真当 .git 目录空的? 除非 1. 攻击者可能(通过漏洞等方式)获得读取后端代码权限 2. 攻击者不可能(通过漏洞等方式)获得读取 .git 目录权限 这怎么想都不可能。 还有一种就是加密注释,信息并没有被除去而只是被隐藏。 比如 AST 分析后把注释过一遍 AES 加密。 |
31
Android2MCU 2019-05-29 16:16:56 +08:00 via iPhone
加密注释啊,自己保留密钥就行了啊,这样推出去别人就看不了了,写个加解密工具分分钟的事情
|
32
az999 2019-05-29 17:35:07 +08:00
编译后 再反编译回来提交 就没有注释了
|
33
nacosboy 2019-05-29 19:12:49 +08:00 via Android
CI 做的事,AST 解析然后去注释
|
34
Cbdy 2019-05-29 19:17:38 +08:00 via Android
线上代码加预处理
|
35
linchengzzz 2019-05-29 19:36:00 +08:00
突然有一天电脑坏掉了,换了台新电脑拉取代码,发现注释都没了,完了看不懂了 TAT
|
36
shehuizhuyi 2019-05-29 19:47:54 +08:00
那不如直接加密代码?
|
37
5200 OP @linchengzzz 代码库在码云。。。
|
38
dalabenba 2019-05-29 20:01:14 +08:00 via Android
应该可以用 git hook 的 push 阶段脚本删一下(没操作过,感觉应该可以)
|
39
ETiV 2019-05-29 20:02:46 +08:00 via iPhone
两个 repo:一个是有注释的,一个是没注释的
开发用有注释的,用类似 GitHub Web Hook 的机制,把源代码 strip 成没注释的同步进另外的 repo。 线上用这个没注释的。 |
40
cpdyj0 2019-05-29 20:07:33 +08:00
去掉注释,拉取代码时怎么办?
|
41
HeiXiaoBai 2019-05-29 20:52:58 +08:00
似乎你们是通过 git 上传代码到生产服务器直接用的?前端?
可以考虑一下先上传到指定目录,然后脚本去注释做处理再移动过去 或者将干脆 git 单独一个服务器出来 …… |
42
elicec 2019-05-29 21:24:46 +08:00
git add -p source.java ??
|
43
MonoLogueChi 2019-05-29 22:40:21 +08:00 via Android
这样其他然怎么同步你的分支呢,而且合并起来也是困难重重
|
44
janus77 2019-05-29 22:42:15 +08:00 via iPhone
git 本身只是一个文件管理系统,其核心是文件本身……他没有附带对注释的区分,所有的内容都是文件本身的一部分
|
45
wizardoz 2019-05-30 09:30:21 +08:00
去掉注释的好处?
|