脱离了 git,我现在用 sftp+phpstorm 来实现多人合作开发。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
fkbd
V2EX    程序员

脱离了 git,我现在用 sftp+phpstorm 来实现多人合作开发。

  •  
  •   fkbd 2017-10-29 13:04:14 +08:00 11704 次点击
    这是一个创建于 2911 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上个月脱离了 git,使用了 sftp。

    先说一下情况:
    1.团队人数比较少,只有 4 个人。并且大家希望在开发的过程中,可以实时看到整体的情况。

    2.因为是底层开发的情况,又使用了敏捷开发的模式。虽然我们开发前进行过函数的统一,但每个人的代码都可能随时为适应整体做出一些小改变,进而影响另一个人。我们希望能即使的沟通,并且随时保证函数代码能通用。

    3.我们在实际过程中,发现我们统一在公共服务器上实时预览效果能帮助我们更好的了解程序整体。

    再说一下,可能为引起各位疑惑的问题。

    1.同一文件的反复提交覆盖:因为 ide 自身提供了 merge 的功能,所以这一问题能很好的解决。
    2.历史版本:ide 自身提供了历史库,历史也都可以追溯。
    3.为什么不用 git:git 的仓库很好很好用。但是对于需要关联密切的底层开发,仓库反复的提交、下载,显得有些累赘。

    使用 sftp 管理的心得:
    这样处理确实大大加快了开发的进度,得力于良好的沟通,代码也不会出现问题。A 写接口,B 写逻辑,双方完成后提交马上可以看到结果。A 和 B 能根据双方的思路,沟通出更适合的逻辑并写实时的看到结果。

    当然这套开发的程序,我也只建议在这一阶段使用。能到实际上线后,我们还是会使用 git 的方式进行版本迭代。
    第 1 条附言    2017-10-30 14:28:48 +08:00
    先认个错,评论说的意见都值得我深思。选择这种方式合作开发,确实存在问题。
    使用 IDE 自身的合并、提交、冲突解决,也能达到部分 git 的效果。这一阶段。这种合作方式在小圈子里提高了效率,上线后会马上改回 git。
    没有用 git 和 svn 的原因,我们会涉及到很多关于引擎的处理和重编译(一名工程师负责),也是想节省本地部署的精力。
    我们都用 jetbrains 家 IDE,但只有用了 phpstorm。
    第 2 条附言    2017-10-30 14:29:34 +08:00
    我们都用 jetbrains 家 IDE,但只有我用了 phpstorm。
    79 条回复    2017-10-30 18:02:00 +08:00
    CFO
        1
    CFO  
       2017-10-29 13:22:33 +08:00 via Android
    版本管理不只是用来上传代码的
    konakona
        2
    konakona  
       2017-10-29 13:24:19 +08:00
    用 git 的思想去用 sftp,结合 IDE 提供的 history,应该是可行的。
    defunct9
        3
    defunct9  
       2017-10-29 13:25:44 +08:00 via iPhone
    不可取吧
    epkT6QJ3RSaz6AnJ
        4
    epkT6QJ3RSaz6AnJ  
       2017-10-29 13:36:19 +08:00
    对于删除文件怎么处理?对于冲突怎么处理?直接覆盖?
    qdwang
        5
    qdwang  
       2017-10-29 13:39:14 +08:00 via iPhone   2
    此方法适合没有分支的情况,挺好的,6 年前就这么干了
    sagaxu
        6
    sagaxu  
       2017-10-29 13:44:20 +08:00   39
    民科总是有民科的办法,理论也是一套一套的
    ryd994
        7
    ryd994  
       2017-10-29 13:53:44 +08:00
    你知不知道 SVN ?
    renothing
        8
    renothing  
       2017-10-29 13:55:53 +08:00
    @sagaxu 手动点赞~
    liangeeks
        9
    liangeeks  
       2017-10-29 13:56:17 +08:00
    @konakona 换环境呢?其他人那儿有没有你的 History
    workwonder
        10
    workwonder  
       2017-10-29 14:08:37 +08:00 via Android
    心累
    fkbd
        11
    fkbd  
    OP
       2017-10-29 14:09:13 +08:00
    @epkT6QJ3RSaz6AnJ ide 自身有这个功能,能处理删除文件的提示,冲突提示,merge 的操作
    fkbd
        12
    fkbd  
    OP
       2017-10-29 14:09:43 +08:00
    @liangeeks history 也可以同步的
    fkbd
        13
    fkbd  
    OP
       2017-10-29 14:12:16 +08:00
    @liangeeks 并且在底层这个阶段,其实不依赖 history,只要保持程序都是最新的就行。
    wtbhk
        14
    wtbhk  
       2017-10-29 15:02:56 +08:00
    3.为什么不用 git:git 的仓库很好很好用。但是对于需要关联密切的底层开发,仓库反复的提交、下载,显得有些累赘。
    ------
    sftp 不需要上传和下载吗……
    xiaolanglang
        15
    xiaolanglang  
       2017-10-29 15:08:01 +08:00
    idea 的 history 不就是一个本地的 git 仓库么?
    wm5d8b
        16
    wm5d8b  
       2017-10-29 15:15:27 +08:00
    从删库到跑路
    wsy2220
        17
    wsy2220  
       2017-10-29 15:22:22 +08:00
    又黑 PHP
    azhi
        18
    azhi  
       2017-10-29 15:50:54 +08:00 via Android
    呵呵哒,谁删了你的代码都不知道
    oisc
        19
    oisc  
       2017-10-29 15:57:00 +08:00
    这个不叫团队,叫作坊
    iyaozhen
        20
    iyaozhen  
       2017-10-29 15:57:28 +08:00 via Android   1
    请注意倒车。
    至少 3 年前遇到过一个外包公司就是这样搞的。

    不过没有最好只有最适合,这样也挺好的。小团队推单测、持续集成也不太合适
    towser
        21
    towser  
       2017-10-29 16:09:42 +08:00
    phpstorm 有 git 插件。
    bramblex
        22
    bramblex  
       2017-10-29 16:19:24 +08:00
    你们怕不是不知道还有多少 php 程序员还在用 cp 做版本管理的吗?
    楼主已经很不 php 了好吧.
    tlday
        23
    tlday  
       2017-10-29 16:39:05 +08:00 via Android
    你们这样等于为了一个实时预览抛弃了围绕 git 产生的一系列开源工具与最佳实践。
    git 仓库的实时预览可以通过 gitlab,github+octree(名字记不清了)或其他类似工具实现。还附带分支切换预览,文件比对,打包下载,ci/cd,自动化测试,blame,history,权限控制,等等。
    newdongyuwei
        24
    newdongyuwei  
       2017-10-29 19:26:44 +08:00   2
    “因为是底层开发的情况,又使用了敏捷开发的模式”, 底层开发? 确实挺 low 啊!不带这么黑敏捷开发的。。。难道版本控制不是软件开发的根本基础吗?

    这种倒车负分经验还是别分享了,有这污点,以后面试都难。
    learnshare
        25
    learnshare  
       2017-10-29 19:37:47 +08:00
    嗯,不需要版本管理,不如 OneDrive 之类的实时同步
    Phariel
        26
    Phariel  
       2017-10-29 20:06:26 +08:00 via Android
    你这样跟打包 QQ 互传区别在哪?多了个服务器?
    klgd
        27
    klgd  
       2017-10-29 20:12:40 +08:00
    我有点儿懵,用 PHP 写什么底层然后会导致你们放弃版本控制(不单单值 git )?
    scofieldpeng
        28
    scofieldpeng  
       2017-10-29 21:32:12 +08:00   1
    这倒车开得。。。没看到有先进和方便在哪儿,我就说这么几个最简单的问题:
    1. 有个组员回家了之后激情仍在,想通宵写代码,你这个方案搞一下?你的 history 怎么保存呢?
    2. 如果组员需要写同一个文件,你这个怎么弄?哎小 A,1-1000 行是我的,你就不要碰了,先敲 1000 个空白行再接着开发,小 C,你的是 2001-3000 行,你得敲 3000 个空白行哦,别忘了
    3. 擦,明明我地是好的,怎么不对了,哎,大伙们,你们谁改了我 xxx 文件下第 yyy 行 zzz 列的那个函数?
    还不说楼上说的自动部署,集成测试以及删库跑路,就这 3 个问题你这方案就歇菜了
    SlipStupig
        29
    SlipStupig  
       2017-10-29 21:55:47 +08:00
    开 feature 和 bugfix 同时进行的时候,你们怎么处理呢?
    johnnie502
        30
    johnnie502  
       2017-10-29 22:10:25 +08:00
    这不叫协同开发,这叫每人负责一个模块开发,不然就是一锅粥
    Felldeadbird
        31
    Felldeadbird  
       2017-10-29 22:25:15 +08:00
    小团队短时间内攻关可以选择。
    但业务上线后,必须马上切换版本库了。否则后续会很多问题出现的。到时候管理就会一锅粥。很多小公司都是这么干的。
    楼主是有想法的,但是希望楼主离职前把项目切换回版本库去吧。否则容易祸害后人 :)
    kiwi95
        32
    kiwi95  
       2017-10-29 22:25:22 +08:00 via Android
    楼主说就 4 个人,估计项目也不大,要是所有人对 git 都不熟,用 sftp 也没什么,不过这经验不值得学习,毕竟我一个人的代码也需要 git 管理…
    gouchaoer
        33
    gouchaoer  
       2017-10-29 22:25:41 +08:00 via Android
    我觉得可以,只要用的顺手就行
    chmlai
        34
    chmlai  
       2017-10-29 22:48:06 +08:00
    哈哈哈
    wdlth
        35
    wdlth  
       2017-10-29 23:04:51 +08:00
    都变成了 local history 还追溯谁干的?
    HuangLibo
        36
    HuangLibo  
       2017-10-29 23:23:06 +08:00
    其他组员居然还能忍, 也是奇迹. 物以类聚?
    rainex
        37
    rainex  
       2017-10-29 23:54:38 +08:00   1
    这不是开倒车,也不是回归原始社会,这是直接回归到地球生命的起源状态
    eternal403
        38
    eternal403  
       2017-10-30 00:32:33 +08:00
    这还不是开倒车?我们团队也 4 个人,git 各种 feather,git flow 用得贼溜。 对于需要关联密切的底层开发,仓库反复的提交、下载,显得有些累赘。 这不正是 git 的优势么?虽然说,用自己顺手的工具就好,但是个人还是强烈建议可以适当花时间多看下 git,感觉楼主提到的问题都不是个事儿。
    fetich
        39
    fetich  
       2017-10-30 00:43:43 +08:00
    前公司的老做法,后来过渡到了 Git/Hg。#6 的言论让我笑了半天。
    pynix
        40
    pynix  
       2017-10-30 01:57:14 +08:00 via iPhone
    强势围观
    kwan
        41
    kwan  
       2017-10-30 03:01:08 +08:00
    666,会玩啊,出了问题只能怪服务器君
    msg7086
        42
    msg7086  
       2017-10-30 04:58:45 +08:00
    不考虑改用 Google Docs 吗?(
    ghostsf
        43
    ghostsf  
       2017-10-30 07:27:15 +08:00 via Android
    所以只是为了实时预览?怕是不知道通过 hook 来自动化部署哦
    naiba
        44
    naiba  
       2017-10-30 07:28:53 +08:00 via Android
    gg
    carlclone
        45
    carlclone  
       2017-10-30 07:52:56 +08:00 via Android
    楼主刷新了 PHPER 的下限,哎
    int64ago
        46
    int64ago  
       2017-10-30 08:02:54 +08:00
    比 Linux 内核还底层?

    不要拿底层开发当借口,直接就说不会用 Git 嘛
    imnpc
        47
    imnpc  
       2017-10-30 08:31:03 +08:00
    单人开发可以这样
    多人开发千万不能这样
    66beta
        48
    66beta  
       2017-10-30 08:57:35 +08:00
    就是懒得多提交几次,将工作量转嫁到人力沟通上,但是程序员的沟通往往都是弱项吧
    jokerjoker
        49
    jokerjoker  
       2017-10-30 08:59:31 +08:00
    干嘛不直接百度网盘,自动同步多台设备
    anyele
        50
    anyele  
       2017-10-30 09:09:05 +08:00
    #6 的回复看得笑了. 物以类聚吧
    xomix
        51
    xomix  
       2017-10-30 09:12:43 +08:00
    ………… po 不知道 snv 吗,你这个功能就是标准的不需要 git 的大部分功能,上个 svn/tfs 就行的,结果你自己摸索一套组合,功能还不全面再用 git 补全,我真的挺佩服你这种天堂有路你不走的勇气的。
    Clarencep
        52
    Clarencep  
       2017-10-30 09:13:52 +08:00
    "ide 自身提供了历史库" -- 呵呵

    电脑要是异常关机一次(比如断电),PHPStorm 的工程文件可能会损坏的,然后那些历史库就呵呵了。。。

    别问我是如何知道的
    vela
        53
    vela  
       2017-10-30 09:15:29 +08:00
    就说一件事……第五个进来时看到这 workflow,会不会扭头走…… 233
    其实我觉得土办法啊民科真没什么可耻的,it works 就好……适应你的需求就完全没问题。
    前提是,别说出来,不然真的很难不被嘲笑。

    我听说某大厂就是 jvm 设置个定时脚本重启,解决了无数疑难杂症,什么 GC 问题什么内存泄露,就是肝!可灵了,但是这蠢蠢的办法说出来依然不免被大家当谈资。呵呵。
    congminghaoxue92
        54
    congminghaoxue92  
       2017-10-30 09:26:14 +08:00
    见过一个 8 个人的 c#团队的操作,那才叫一个先进生产力呢!!没有 git,没有 svn,也没有 sftp 当然没有 ftp,甚至没有微软家的 tfs。改动或 bug 修复前,会在本地复制文件夹记上日期,修改后编译成 dll。然后,重点来了,打开远程登录,直接把 dll 复制到服务器。第一次看到惊呆了 word 哥!!
    5dkgansm
        55
    5dkgansm  
       2017-10-30 09:40:23 +08:00
    @congminghaoxue92 很多企事业单位是内网隔离的,连 ftp 都不让装的,能直接远程登录拖文件已经很给面子了。
    nekoyaki
        56
    nekoyaki  
       2017-10-30 09:47:14 +08:00
    你哪怕用 dropbox 呢都比 ftp 强啊……
    我大学时候做课设,组内没人会 git,我没办法才让大伙拿 dropbox 当 git 用。
    iyangyuan
        57
    iyangyuan  
       2017-10-30 09:57:56 +08:00 via iPhone
    都是大神级别
    lcc4376
        58
    lcc4376  
       2017-10-30 10:05:07 +08:00
    合作或都用 git ,以前不 git 用 dropbox 但那是 4 年前的事
    cloudzhou
        59
    cloudzhou  
       2017-10-30 10:08:11 +08:00
    看了这么久,没理解不用 git 的原因。
    我猜测是这样的,你们开发的时候,需要非常及时的在线可看,并且相互修改代码。
    如果用 git 的分支管理,涉及到分支合并,提交和发布,比较麻烦。
    但是目前,完全可以这么做:

    1 大家都在一个分支下开发,习惯性 pull,merge,push,及时解决冲突。
    2 使用 webhook 线上触发发布,只需要推送到特定分支,或者打一个 tag 就可以了。

    需要明确一点,冲突解决是关键,不管是 sftp 和 git,都是需要解决的。
    但是如果使用 sftp,你把 git 所有的优势,特性都丧失了。
    kuro1
        60
    kuro1  
       2017-10-30 10:08:28 +08:00
    请注意,倒车!
    pagxir
        61
    pagxir  
       2017-10-30 10:19:55 +08:00 via Android   1
    楼主这是认真学习了会议精神呀。
    pynix
        62
    pynix  
       2017-10-30 10:38:12 +08:00 via iPhone
    @pagxir 快递到了
    konakona
        63
    konakona  
       2017-10-30 10:42:39 +08:00
    @liangeeks 团队规范本来就要每个人都适应,如果适应不了,就换人。这是一个很简单都道理。不用想得太复杂,如果 team leader 选了一个方法而大部分人能执行,只有少数人因个人原因无法执行,请你告诉我,这叫什么?
    firebroo
        64
    firebroo  
       2017-10-30 10:47:53 +08:00
    @boywang004 笑了我半天。。就是肝
    coolcoffee
        65
    coolcoffee  
       2017-10-30 11:00:03 +08:00
    别的不说,就还要绑定 IDE,我就得举个反对。

    虽然我也很喜欢 jetbrains,但万一哪天想要用下轻量级的 vs code,我还得挂个超级占内存的 phpstorm ?
    sampeng
        66
    sampeng  
       2017-10-30 11:04:31 +08:00
    你要这么说。。那 dropbox 之类网盘不更给力一点。。。
    自建 seafile 网盘。。秒同步。
    clino
        67
    clino  
       2017-10-30 11:05:43 +08:00
    "仓库反复的提交、下载,显得有些累赘" 这逻辑怎么出来的?
    QAPTEAWH
        68
    QAPTEAWH  
       2017-10-30 11:16:10 +08:00
    这多麻烦,建议复制粘贴发 QQ 消息
    oska874
        69
    oska874  
       2017-10-30 11:16:49 +08:00
    底层?有多底层?我写汇编还得用 git/svn 呢
    wingoo
        70
    wingoo  
       2017-10-30 11:37:27 +08:00
    你们高兴就好
    sagaxu
        71
    sagaxu  
       2017-10-30 11:48:49 +08:00 via Android
    @oska874
    @int64ago
    他说的底层是 lowb 的那个底层,不是系统底层,不要理解错了
    weegc
        72
    weegc  
       2017-10-30 12:00:24 +08:00
    你们开心就好
    pangliang
        73
    pangliang  
       2017-10-30 12:17:29 +08:00 via iPhone
    用 git 和用 sftp 直接上传开发机根本不冲突
    tairan2006
        74
    tairan2006  
       2017-10-30 13:13:50 +08:00
    不懂为啥这么搞…没看到优势
    toyuanx
        75
    toyuanx  
       2017-10-30 14:32:20 +08:00
    之前是通过 sftp+netbeans+svn,后来加强安全规范,添加了跳板机登录,sftp 就行不通了。

    目前使用 samba+phpstorm+git 实现代码上传下载。
    abcbuzhiming
        76
    abcbuzhiming  
       2017-10-30 14:51:18 +08:00
    就算你们用不惯 git,至少也要上 svn 啊
    bbao
        77
    bbao  
       2017-10-30 15:33:45 +08:00
    这是一家觉得自己不会人员扩张以及开发代码量不大且不招人的公司

    我记得,08 年实习那会儿,使用各种 ftp 进行上传,找问题,各种翻啊翻啊翻。棒棒哒
    winglight2016
        78
    winglight2016  
       2017-10-30 17:27:11 +08:00
    不知道还有人用了 git 觉得不好用,更万万想不到用 ftp+local history 来做源代码管理实时预览是说即时更新服务器吗?前面有人说了 gitlab+webhook+Jenkins 就搞定了啊
    ihuzhou
        79
    ihuzhou  
       2017-10-30 18:02:00 +08:00
    听见敏捷开发就头疼。产品以为敏捷开发就是不写文档,开发以为敏捷开发就是不写文档+不写注释+不需要版本控制+不需要单元测试。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2521 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 11:55 PVG 19:55 LAX 04:55 JFK 07:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86