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

公司的网站要不断的更新,不断上传文件,怎样才能提高效率?

  •  
  •   hellohacker · 2013-08-06 09:15:57 +08:00 · 6446 次点击
    这是一个创建于 4118 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个问题困惑了好长时间,至今也没有解决。说下我的情况:
    我负责维护公司的3个网站,主要是网站功能的开发。几乎每天要修改代码,一次大概修改十几个甚至更多。起初我是现在本地调试完,然后上传到服务器。但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。
    我现在的做法是,把服务器的文件全部down到本地,然后修改一个上传一个,然后调试,这样虽然不用到最后找修改了哪些文件,但是修改一次上传一次,然后调试,这样的做法也挺慢。
    大家有没有这样的工作经历,是怎样解决的。在这里先谢过大家。

    ps:第一次发帖,有不当的地方 还请指正!
    55 条回复    1970-01-01 08:00:00 +08:00
    rwx
        1
    rwx  
       2013-08-06 09:18:20 +08:00
    git
    felix021
        2
    felix021  
       2013-08-06 09:19:23 +08:00
    目测楼主真的是没有听说过版本管理的概念。。。
    humiaozuzu
        3
    humiaozuzu  
       2013-08-06 09:20:54 +08:00
    版本管理+自动化部署
    welsonla
        4
    welsonla  
       2013-08-06 09:23:07 +08:00
    1你可以看看自动化部署,
    2.你把代码提交到git,每次修改先git commit,看看本地涉及到了哪些文件
    hellohacker
        5
    hellohacker  
    OP
       2013-08-06 09:23:35 +08:00
    git 和svn这些我了解过 但是这些不都也要提交吗。能否给我个详细的方案。
    lichao
        6
    lichao  
       2013-08-06 09:26:04 +08:00
    @hellohacker { 但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。 }

    用了 git,就不会有这个烦恼了
    ushuz
        7
    ushuz  
       2013-08-06 09:29:23 +08:00
    @hellohacker 既然了解过,何不试试看?
    williamx
        8
    williamx  
       2013-08-06 09:36:42 +08:00
    lz可能还不知道流程。我想大家的意思应该是,把修改push到git服务器,然后在网站服务器上pull代码。
    我对网站开发不熟,有知道的最好说多一点,好让lz google的时候也有关键字。
    Livid
        9
    Livid  
    MOD
       2013-08-06 09:38:51 +08:00
    最快的方法:

    在本地机器和服务器上都安装 BTSync,然后就自动同步了。
    felix021
        10
    felix021  
       2013-08-06 09:40:51 +08:00
    @ushuz +1

    @williamx 我觉得提到git/svn/版本管理就足够了。大家都这么说,表示这是公认的解决方案,楼主需要做的事情就是真的去“了解”他以前“了解过”的东西。

    至于“给个详细的方案”这种要求,我就只能呵呵了。伸手党在各个地方一向都不太让人喜欢。
    vibbow
        11
    vibbow  
       2013-08-06 09:47:12 +08:00
    用GoodSync,关联本地目录和服务器目录,任何一边修改了,都可以同步到另一边。
    pythoner
        12
    pythoner  
       2013-08-06 09:48:06 +08:00
    git + fabric 世界会美好很多
    vibbow
        13
    vibbow  
       2013-08-06 09:49:43 +08:00
    GoodSync的强大之处就是支持各种连接方法,实属同步/备份利器。
    http://vsean.net/pic/di-YLQR.png
    vibbow
        14
    vibbow  
       2013-08-06 09:53:55 +08:00
    补充:GoodSync也可以设置排除,多线程同步,定时同步。
    还有一些其他的功能,比如说对于软连接,是同步为软连接,还是向下探寻;或者同步完成/失败后发送邮件,保留被删除的文件等等功能(反正我都没用)
    hellohacker
        15
    hellohacker  
    OP
       2013-08-06 10:06:43 +08:00
    谢谢大家的精彩回答 受益匪浅!
    wwqgtxx
        16
    wwqgtxx  
       2013-08-06 10:19:43 +08:00 via Android
    用git hook应该也可以,具体方法可以看看gitpro这本书
    wwqgtxx
        17
    wwqgtxx  
       2013-08-06 10:20:54 +08:00 via Android
    是progit,手滑了一下……
    BeijingBaby
        18
    BeijingBaby  
       2013-08-06 10:22:37 +08:00
    @wwqgtxx 滑了一下
    wwqgtxx
        19
    wwqgtxx  
       2013-08-06 10:23:55 +08:00 via Android
    Ricepig
        20
    Ricepig  
       2013-08-06 10:45:16 +08:00
    金山快盘百度网盘DBankEverBoxYunio等等等等
    phuslu
        21
    phuslu  
       2013-08-06 10:55:37 +08:00
    楼主你其实可以试下 winscp 的同步功能。。。
    vivianalive
        22
    vivianalive  
       2013-08-06 10:55:47 +08:00
    一个人维护三个网站...我很惊讶你竟然没有使用版本管理软件.
    试想一下,如果是三个人维护一个网站,你们要怎么追踪,记录,解决各自的改动和冲突呢?

    所以,你需要GIT/SVN/SourceAnywhere + 任意一款FTP工具.
    buru
        23
    buru  
       2013-08-06 10:57:36 +08:00
    我用svn,代码一次提交,然后show log,选择added 和 modified 的文件,export出来,然后ftp 上传至服务器,done
    buru
        24
    buru  
       2013-08-06 10:59:24 +08:00
    我对git不熟悉,我想问一下各位git有没类似svn的export功能,就是导出来目录结构都在的?
    xiaket
        25
    xiaket  
       2013-08-06 11:01:30 +08:00
    没人提rsync? 要比较可以先dry-run一次, 确认后再跑一次. 自动增量, 自动比较文件校验值, 多省心...
    aggron
        26
    aggron  
       2013-08-06 11:01:52 +08:00
    我现在的做法是,代码托管在bitbucket上(上面可以建免费的私有仓库)
    每次发布版本时,本地push到bitbucket,然后SSH到VPS,hg pull, hg update代码就拿过去了。

    你也可以不使用bitbucket的服务,直接在服务器上建hg/git server。
    chchwy
        27
    chchwy  
       2013-08-06 11:22:54 +08:00
    @hellohacker { 但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。 }

    用了git,隨時知道源碼何時何地何處有修改,各修改版之間的差異,全都一清二楚。

    你要做的就是在服務器上開個git/svn版本庫,然後開始學著用。本地端改完了就將變更推送進版本庫,服務器上再從版本庫更新源碼。
    shierji
        28
    shierji  
       2013-08-06 12:18:14 +08:00
    亲。git欢迎你……
    nsa
        29
    nsa  
       2013-08-06 12:22:38 +08:00
    deploy, production, rsync, git
    terry
        30
    terry  
       2013-08-06 12:47:53 +08:00
    rsync over SSH, sshfs, NFS, btsync, continous integration 工具直接从 Git Repo 中 checkout 部署,很多不同的做法。
    undeadking
        31
    undeadking  
       2013-08-06 12:53:34 +08:00
    我负责的一个项目是服务器在客户那,我只有ftp的权限,无法在服务器上部署任何软件.于是只能用git diff --name-only 来查看修改过什么文件,然后再逐个上传.

    其他项目都是直接push到代码库,然后在服务器上执行pull

    @buru git archive -o update.zip HEAD $(git diff --name-only HEAD^)
    原贴见 http://ruby-china.org/topics/5312
    Nerrsoft
        32
    Nerrsoft  
       2013-08-06 13:14:30 +08:00
    git 不二选择
    revlis7
        33
    revlis7  
       2013-08-06 14:08:41 +08:00
    @undeadking 对于只能使用FTP的情况,我又要忍不住推荐BeyondCompare了,可通过FTP、SFTP比较本地和远程的文件,哪些文件被修改过一目了然。
    jevonszmx
        34
    jevonszmx  
       2013-08-06 14:11:07 +08:00
    最简单的方法不是版本控制+rsync嘛?
    公司是svn+rsync同步8台web服务器,毫无压力。

    楼主看来对版本控制毫无概念。。。
    mengzhuo
        35
    mengzhuo  
       2013-08-06 14:45:39 +08:00
    git + fabric + rsync + alias

    yoyo~
    pubby
        36
    pubby  
       2013-08-06 14:57:53 +08:00
    gxxa36d
        37
    gxxa36d  
       2013-08-06 15:01:09 +08:00
    版本控制
    lordong
        38
    lordong  
       2013-08-06 15:50:51 +08:00
    竟然没人提到dropbox?
    jpuyy
        39
    jpuyy  
       2013-08-06 16:17:22 +08:00
    你可外包给ls任何一位,问题解决。
    DoubleH
        40
    DoubleH  
       2013-08-06 16:48:17 +08:00
    Git真的就这么NB?
    rwx
        41
    rwx  
       2013-08-06 16:57:44 +08:00
    @DoubleH 能解决问题的工具而已
    asing
        42
    asing  
       2013-08-06 17:26:21 +08:00
    @aggron 请问SSH到VPS是什么意思?

    VPS上面需要配置什么么?

    bitbucket相当于FTP了吧?

    谢谢
    redtears
        43
    redtears  
       2013-08-06 17:46:50 +08:00
    其实,楼主可以通过文件修改时间这个属性来判断,多简单。
    hustlzp
        44
    hustlzp  
       2013-08-06 19:18:01 +08:00
    git push
    fab deploy:(1)cd /path/to/your/project/ (2)git pull(3)restart app
    likuku
        45
    likuku  
       2013-08-07 00:50:05 +08:00   ❤️ 1
    @hellohacker 「git 和svn这些我了解过 但是这些不都也要提交吗。能否给我个详细的方案」

    是的,一样要提交,但是以前你是改好就直接“提交”到线上服务器,无数次提交完全无迹可循,假若自己每次修改文件都另存一份新副本,则很快文件也凌乱到头昏脑胀了。

    git 和 svn 都能让你修改和提交后有机会追踪代码进化历史,并且随时可以取出/比对 任意提交过的版本。
    imzoke
        46
    imzoke  
       2013-08-07 01:52:35 +08:00
    @redtears +1
    如果修改的文件在不同文件夹,可以使用 Everything 列出网站目录下的所有文件,然后按更新日期排序。

    这些都是笨方法,一劳永逸还是 Git 吧。
    xdyl
        47
    xdyl  
       2013-08-07 06:42:10 +08:00
    1.楼主不是开发人员
    2.不是开发人员需要频繁更改源码来发布?
    3.推荐你需要的不是一个Git/Svn.而是一次代码上的重构.给你一个CMS的后台
    lerry
        48
    lerry  
       2013-08-07 09:12:35 +08:00 via Android
    GoodSync不错,我用来同步手机音乐和备份文件
    williamx
        49
    williamx  
       2013-08-07 10:05:57 +08:00
    @felix021 我很不赞同你的这种说法。一个工具针对不同的case有不同的用法。只提git,而不支持具体的方法,对提问者来说,没有实际的帮助。你当然可以就这样认为你已经“给了足够的帮助”,但我还是希望其他人可以更nice一些。
    felix021
        50
    felix021  
       2013-08-07 10:10:51 +08:00
    @williamx 见仁见智。LZ所说的问题“有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情”,如果他真的“了解”过git/svn,用过哪怕只有一次"git/svn status",这就不会是问题,特别是,这个是最基础的命令之一。
    belin520
        51
    belin520  
       2013-08-07 10:12:22 +08:00
    @humiaozuzu 我没有用过自动化部署,起码还会版本管理。。。擦,突然感觉自己也挺好。
    williamx
        52
    williamx  
       2013-08-07 10:23:14 +08:00
    @felix021 嗯,真是看出了他对git没有很好的了解,才觉得更需要清晰明确的指导。毕竟对一个新手来说,git并不是那么简单。而git status找出了文件后,如果没有配套的命令/工具来收集这些文件,人工一个一个去处理,还是非常麻烦的一件事情,当然这就和他的具体如何用这些文件有关了,而他也没有说清楚。
    felix021
        53
    felix021  
       2013-08-07 15:14:38 +08:00
    @williamx 一个更清晰明确的指导不一定是好事,也许这次是你帮到了他,但是下次呢?我不知道你有没看过《提问的智慧》 (推荐 @hellohacker 看看),我一直是以这里的标准来要求自己和别人。好的问题才值得好的回答;而显然“能否给我个详细的方案”不是个好问题。
    wwqgtxx
        54
    wwqgtxx  
       2013-08-07 17:39:11 +08:00 via Android
    @williamx
    @felix021
    有你们两个讨论是时间,应该可以给楼主一个解决方案了,毕竟人家是来找答案的,不是来听争论提问与回答的艺术的
    felix021
        55
    felix021  
       2013-08-07 18:08:23 +08:00
    @wwqgtxx 不好意思,相比之下,我觉得后一个问题更重要;而且题主需要的答案,回答里已经有了,剩下的内容他应该而且也有能力去完成,关于这一点LZ在 15L 其实已经表态了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:25 · PVG 03:25 · LAX 11:25 · JFK 14:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.