• 请不要在回答技术问题时复制粘贴 AI 生成的内容
biguokang
V2EX  ›  程序员

各位大佬,请教一下如何在断网的环境下同步代码?

  •  
  •   biguokang ·
    AlpacaBi · Jan 14, 2021 · 8219 views
    This topic created in 2123 days ago, the information mentioned may be changed or developed.

    先说一下场景,因为业务关系,客户很多是军警或者涉密部门

    所以你懂的,他们的内网是和外网隔离的。

    别说连外网,插个自己的 u 盘都报警。。。

    所以目前把系统代码更新到现场,方法是公司里面写好后,把源码发到现场人员自己的电脑,然后使用现场单位提供的 [特供 u 盘] ,把代码覆盖到内网机器。。

    而有时候需要在单位现场改代码,然后同步回公司,一般是内网机器下的代码改好后,把改动过的代码文件通过单位提供的 [特供 u 盘] ,拷到自己的电脑,然后用自己的电脑连外网同步到公司。。。。

    有什么好的工具或者方法,不用手动复制粘贴呢,每次这么搞都很操蛋。。。

    说白了,如何能轻松方便的往隔离外网的局域网机器里同步代码呢????

    Supplement 1  ·  Jan 15, 2021
    补充一下,看了一圈评论可能是我表达的不好,感觉是可能以为我要想办法把公安内网设备暴露到外网。。。


    我肯定不会这么作死。。。


    主要是根目录里 10 来个根目录文件夹,每个根目录文件夹在公司里面是单独的 git 仓库,然而现场环境没有 git,然后里面有成千上万个代码文件(前端)

    一般的做法是在公安内网改了现场的代码,需要从这成千上万的文件里面单独抽离出改动过的文件,然后通过 u 盘拷回公司同步。。。相反公司到公安现场也是一样,也是要抽离,只是公司里面有 git 找出改动过的代码好找一点而已

    所以没有 git 管理,这就很艹蛋了,有时候还会漏掉文件,这就会导致若干问题。。。



    所以我的想法是有没有类似的工具,比如可以给 u 盘做成一个 git 镜像库,这样我 u 盘插我自己的电脑,往 u 盘里 git push,然后插到公安内网的电脑,在公安内网电脑 git pull,那就爽多了,反过来公安内网同步到公司也一样,而且还能随时回退
    Supplement 2  ·  Jan 15, 2021
    再补充一下,我的想法只是单纯觉得人肉 diff 代码太难受,因为漏了同步一个文件导致了很多奇奇怪怪的 bug,排查起来又烦,被烦惨了,所以想在通过 u 盘来使得单位的 git 和公司的 git 来进行代码同步,也就是把 u 盘做成一个 git 库。。。

    首先明确说一点,数据传递只会使用单位提供的 [特供 u 盘] ,绝对不是什么连外网什么。。。。
    71 replies  •  2021-01-19 13:17:58 +08:00
    exip
    exip
    Jan 14, 2021 via Android
    1
    你确定你把想要的功能实现了,还有回家过年?
    polyang
    polyang
    Jan 14, 2021
    2
    没办法吧?要是有办法的话,人家搞内网的意义在哪儿?
    polyang
    polyang
    Jan 14, 2021
    3
    @exip 哈哈,这要是实现了,就相当于泄密了。
    mascteen
    mascteen
    Jan 14, 2021 via Android
    4
    搞个跳板
    lizytalk
    lizytalk
    Jan 14, 2021
    5
    就算对方的隔离有漏洞也别作死...
    MeteorCat
    MeteorCat
    Jan 14, 2021 via Android
    6
    军警涉密部门你还敢这么干
    whitehack
    whitehack
    Jan 14, 2021
    7
    老老实实的吧.别犯法.
    php8
    php8
    Jan 14, 2021 via Android
    8
    git 可以离线使用,把 repo 打个 zip 包,手动复制 zip 包,代码变更记录交给 git 管理
    hinate
    hinate
    Jan 14, 2021 via iPhone
    9
    坚持向内同步,不要反向同步。
    Overfill3641
    Overfill3641
    Jan 14, 2021
    10
    我觉得如果实现了,是不是可以用作黑入呢?那是不是可以免费居住了呢?
    kaneg
    kaneg
    Jan 14, 2021 via iPhone
    11
    不管技术能不能做到,你都不能以身试法。
    Fading2276
    Fading2276
    Jan 14, 2021
    12
    @tiglapiles 这样就是要准备吃不花钱的饭了

    能否准备一台机器,这台机器只做同步,采用物理网线插拔,同时只能接一个网。
    7654
    7654
    Jan 14, 2021
    13
    windows 的公文包
    jr55475f112iz2tu
    jr55475f112iz2tu
    Jan 14, 2021
    14
    对于这类型客户,你首先要想的是这是否合法合规,而非是否方便
    否则上面很多人已经提过了,很容易就进去了
    EastLord
    EastLord
    Jan 14, 2021
    15
    把代码背下来
    loading
    loading
    Jan 14, 2021 via Android
    16
    居然还能用特种 U 盘,应该用光盘啊。
    mengyx
    mengyx
    Jan 14, 2021
    17
    git bundle 了解一下 https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E6%89%93%E5%8C%85
    或者 git patch 也可以
    jimmyismagic
    jimmyismagic
    Jan 14, 2021
    18
    patch 再 apply 回去
    AmitabhaPk
    AmitabhaPk
    Jan 14, 2021
    19
    你这是找死啊兄弟,保密是天条。。。
    dorothyREN
    dorothyREN
    Jan 14, 2021
    20
    @czfy #14 这不是很容易,是肯定
    boris93
    boris93
    Jan 14, 2021 via Android
    21
    这种地方我只强调三个规矩

    合规

    合规

    还是,他妈的,合规
    redtea
    redtea
    Jan 14, 2021 via iPhone
    22
    要是实现需求了,要吃花生米了。
    LGA1150
    LGA1150
    Jan 14, 2021
    23
    git format-patch 或 git diff 生成补丁
    拷贝到目标机后再 git am 或 git apply 打补丁
    LGA1150
    LGA1150
    Jan 14, 2021
    24
    顺便补充下,git format-patch 生成的补丁是可以直接当电子邮件发送的,很多开源项目的维护也是靠的电子邮件发补丁,包括 Linux 内核
    shijingshijing
    shijingshijing
    Jan 14, 2021
    25
    怎么方便怎么来,一波骚操作,后半辈子就不愁吃住了。
    J55s5
    J55s5
    Jan 14, 2021
    26
    不想努力了嘛?
    rb6221
    rb6221
    Jan 14, 2021
    27
    前几个月还有新闻呢,医院系统 运维私自在外网访问内网机器 然后系统出故障了导致收入损失上千万 人蹲号子了
    rb6221
    rb6221
    Jan 14, 2021
    28
    @janus77 #27 你这种情况就不止是蹲号子了 直接断头饭吧
    wc951
    wc951
    Jan 14, 2021 via Android❤️1
    29
    看来你们单位保密考试还是考的少了,去复习一下涉密人员管理条例以及国家保密法
    Puteulanus
    Puteulanus
    Jan 14, 2021❤️3
    30
    搜了一下,git 支持添加本地路径作为 remote https://superuser.com/questions/1367571/using-git-across-multiple-systems-without-network-access/1367582

    特供 U 盘里直接拷整个 repo,当成 git 库来用怎么样,内网机器改完打个 commit,push 到特供 U 盘 repo,特供 U 盘插到你电脑上,你本地 repo pull 一下,联网了再 push 回公司 repo
    SIGEV13
    SIGEV13
    Jan 15, 2021
    31
    商业机密是民法,国家机密是刑法。老哥量力而行 😜
    fiveelementgid
    fiveelementgid
    Jan 15, 2021 via Android❤️1
    32
    您好,我是大陆北方网友,对您所说的技术要求很感兴趣🐶
    swulling
    swulling
    Jan 15, 2021 via iPad
    33
    30 楼正解,在 U 盘里放一个 repo
    340244120w
    340244120w
    Jan 15, 2021 via iPhone
    34
    1 git patch,缺点是内网机器也需要装 git.

    2 装个文件对比工具,内网机器保留两份源码,用其中一份修改,另一份用来被对比。最后用软件把差异文件导出来。

    3 最简单粗暴的还是把修改后的项目从内网机器上压缩拷回来(只复制粘贴一次),回来直接覆盖本地项目不就可以了吗。
    也完全不用拷 git repo
    614457662
    614457662
    Jan 15, 2021 via Android
    35
    @fiveelementgid 不是南方网友才对嘛 手动狗头
    mcone
    mcone
    Jan 15, 2021
    36
    这年头,还真有自己找花生米吃的……

    考试考少了 + 1
    CloseToWheat
    CloseToWheat
    Jan 15, 2021
    37
    本地装 git 不够嘛?在内网提交到本地,到外网直接 push 啊
    myd
    myd
    Jan 15, 2021
    38
    git format-patch 生成补丁
    wozhizui
    wozhizui
    Jan 15, 2021
    39
    你在内网环境搭建个 git 服务器不就可以了
    wozhizui
    wozhizui
    Jan 15, 2021
    40
    然后统一由一个技术管理者,每天人肉将这个 git 服务器的硬盘插拔下来,带回你的公司。
    这种场景,只能人肉插拔。
    omghonor
    omghonor
    Jan 15, 2021
    41
    相似业务,不过我们是金融行业,生产网络是专网,代码上传只能靠硬盘,下载要走流程。无解的。信息安全和稳定是头等大事。
    zyq2280539
    zyq2280539
    Jan 15, 2021
    42
    git patch
    biguokang
    biguokang
    OP
    Jan 15, 2021
    43
    @LGA1150 对对对,就是想要这种解决方案,我去搜搜看
    biguokang
    biguokang
    OP
    Jan 15, 2021
    44
    @340244120w 1 、2 这个可以,因为内网的要求只是不连外网,装个 git 没问题,所以把 u 盘做成一个 git 库可以。。。至于第 3 个其实无解,因为整个项目加起来可能有上 g 大,然后我们自己的电脑连外网都是用手机热点连外网的,流量伤不起,所以之前才要一个一个文件抽出来
    yingfengi
    yingfengi
    Jan 15, 2021 via Android
    45
    @loading 所谓安全 U 盘。。。可以带加密
    biguokang
    biguokang
    OP
    Jan 15, 2021
    46
    @LGA1150 你这个可靠,就是我想要的解决方案,其他人都觉我想要把公安电脑暴露在外网
    yingfengi
    yingfengi
    Jan 15, 2021 via Android
    47
    加网闸,然鹅你的申请不会通过的
    LLLYang
    LLLYang
    Jan 15, 2021
    48
    没啥用,我现在也是这样的
    LLLYang
    LLLYang
    Jan 15, 2021
    49
    只能自己搞代码对比软件,然后一个一个类去对
    biguokang
    biguokang
    OP
    Jan 15, 2021
    50
    @wozhizui 我的想法是再单位提供的 [特供 u 盘] 里放个 git 库,通过 u 盘来 git pull git push
    young1lin
    young1lin
    Jan 15, 2021
    51
    感觉你在刀尖上干活啊 [doge]
    Judoon
    Judoon
    Jan 15, 2021
    52
    把需要在前场变更的 git 仓库单独用 docker 建立一个 gitlab,数据以及 docker 镜像都放在移动硬盘。
    每次使用的时候,插上硬盘,用 docker 把 gitlab 仓库在本地起起来,改完代码同步到本地的 gitlab 。拿回公司类似操作同步到公司总的 gitlab 服务器上。
    为以防万一,硬盘可以做一些镜像备份或者在公司做实时同步之类的
    qiumaoyuan
    qiumaoyuan
    Jan 15, 2021
    53
    直接插着 U 盘写代码不就完了,一来编写和保存代码根本没多少 IO 工作,二来现在的 U 盘读写也不差,为啥非得拷出来?
    IMCA1024
    IMCA1024
    Jan 15, 2021
    54
    3 、4 年前,曾经一项目是 云南省公安厅的,经历跟楼主差不多 没办法 老老实实。
    SmiteChow
    SmiteChow
    Jan 15, 2021
    55
    git format-patch
    git am
    no1xsyzy
    no1xsyzy
    Jan 15, 2021❤️1
    56
    你是不是忘记了 git 最初的使用方式?
    邮件,发来发去。
    邮件换成专用 U 盘没有什么本质区别。
    iSecret
    iSecret
    Jan 15, 2021
    57
    @Puteulanus 本地路径做 remote 仓库,刚刚实验了一下,可以 pull,但是 push 会报错,不知道是不是姿势不对。


    ```shell
    $ git push origin master
    Enumerating objects: 5, done.
    Counting objects: 100% (5/5), done.
    Writing objects: 100% (3/3), 257 bytes | 257.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: error: refusing to update checked out branch: refs/heads/master
    remote: error: By default, updating the current branch in a non-bare repository
    remote: is denied, because it will make the index and work tree inconsistent
    remote: with what you pushed, and will require 'git reset --hard' to match
    remote: the work tree to HEAD.
    ...
    ! [remote rejected] master -> master (branch is currently checked out)
    error: failed to push some refs to '/Volumes/NONAME/test.git'
    ...
    ```
    beryl
    beryl
    Jan 15, 2021
    58
    没有办法,之前做过类似的,甚至问题日志都是对着屏幕,手抄到纸上。
    或者换个思路,在客户现场的内网环境电脑作为主开发,相当于驻场
    niub
    niub
    Jan 15, 2021
    59
    2019 年的时候去某银行 POC 的时候,也是这样哈哈,只不过当时用的云主机开发+部署
    vivisidea
    vivisidea
    Jan 15, 2021
    60
    可以走 docker 部署么?每次直接同步镜像,而不是代码。。
    dingwen07
    dingwen07
    Jan 16, 2021 via iPhone
    61
    如果有的话,试试看用麦克风和扬声器组网
    elintwenty
    elintwenty
    Jan 16, 2021
    63
    如果可以 docker 部署的话,直接切换镜像仓库进行同步就实现这些功能了,非常简单,就是拷贝镜像过程可能比直接拷贝代码长一些
    user0
    user0
    Jan 16, 2021
    64
    刚刚试了一下 git 本地仓库,仅供参考:
    user0
    user0
    Jan 16, 2021
    65
    @user0 不小心回车了,重发
    user0
    user0
    Jan 16, 2021
    66
    # 以下操作在客户电脑
    user0
    user0
    Jan 16, 2021
    67
    1. cd proj-src #proj-src 为已开发的代码路径
    2. git init
    3. git add -A && git commit -m "Initial commit"

    然后使用 u 盘把客户电脑上的代码仓库拷到自己的电脑上, 这个步骤只需要做一次
    以后客户的代码一旦变更,仍然使用 git 提交到本地的仓库,不需要 git push, 然后将变更使用 git format-patch 生成 patch 文件, 最后用 u 盘把 patch 拷贝到自己电脑上就行了
    qian19876025
    qian19876025
    Jan 16, 2021
    68
    成都的外包?
    wolong
    wolong
    Jan 16, 2021 via iPhone
    69
    我以前做过内网涉密系统维护,只能用光盘拷文件,一插 u 盘就报警,虽然不至于坐牢,但是差点给我开了,后来研究了内网的报警系统,分析是系统会检测新增磁盘的可写性,把 u 盘设为只读应该没问题。然后大胆试了一下,果然没报警了。后来请示了领导问能不能用 U 盘这么用,领导说只要系统不报警随便你怎么玩。
    我维护的那个系统安全级别比公安网低,楼主还是按规程来,麻烦就麻烦点,反正都计算在工作量里了,别节外生枝。既然都要插 U 盘,复制粘贴和 push pull 又有多大区别。
    sprite82
    sprite82
    Jan 17, 2021
    70
    内网的机器装一个 git,建立一个本地仓库,然后通过这个本地仓库在内网开发,出来时把整个仓库拷出来。然后在外面把这个仓库的提交记录什么的全都 pull 到你自己的电脑上,并进行 merge 等操作。同理 进去的时候,把外面的 git 仓库带进去即可。而不是一个个文件拷贝
    biguokang
    biguokang
    OP
    Jan 19, 2021
    71
    @loading 我那边可以的,负责对接的民警把他的特供 u 盘借给我们,里面没有任何数据就是给我们专用,除了不能带出公安局其他随便用。。。。不过以前也见过一些单位不可以,只能光盘,用光盘就很 cao 蛋了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   702 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 168ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.