【问题标题】:PhpStorm – how to upload only modified files?PhpStorm – 如何只上传修改过的文件?
【发布时间】:2013-06-19 10:15:41
【问题描述】:

我在 PhpStorm 有一个项目。我在根文件夹上按upload to ftp,所有文件都上传到服务器。然后我在这个项目上工作——比如说修改一个文件。 当我现在按upload to ftp 时,我看到所有文件都在再次上传 - 但在上次上传后它们未修改

我不想自动上传,也不想在显式保存操作时settings → deployment → options 中的覆盖最新文件设置未选中

与已部署同步不是一个解决方案,因为一个项目是巨大的蚂蚁,按内容比较每个文件完全浪费资源和时间。

如何只上传修改过的文件?

【问题讨论】:

  • 您是否尝试过在Settings | Deployment | Options保留文件时间戳?顺便说一句——为什么要“按内容”进行比较?您是否尝试过按“时间戳和大小”进行比较 - 应该更快(尽管如果网站很大并且连接速度很慢,仍然会很慢)。
  • 如果您使用的是 VCS -- 在推送/提交修改后的文件时,应该有一个选项可以将文件部署(上传)到默认服务器(我对此不是 100% 确定,因为我这样做了我自己不使用 VCS——只要记得看到这种东西)。
  • 是的,我尝试按时间戳和大小进行比较。但看起来尽管如此,文件是按内容进行比较的。也许是为了在下拉菜单从“按时间比较”变为“按内容比较”时快速做出反应。而且速度是一样的(慢)。不,我没有使用 VCS。我只是在本地主机上开发网站,当重要的代码完成后——上传到生产服务器。奇怪的是,PhpStorm 没有这么简单的功能。我“用谷歌搜索”,但似乎没有解决方案。也许,我会使用 3rd 方工具进行上传,但对如此出色的 PhpStorm 感到不舒服。
  • 嗯 .. 在这里使用 VCS 肯定会更有用:IDE 具有更改列表,这是跟踪修改文件的绝佳工具。我在想:您可以使用本地历史记录功能查看您在一段时间内修改了哪些文件(很高兴看到这些修改过的文件/文件夹的列表)..但不幸的是没有“上传”按钮(我自己也想要)。我知道有一张票……但我现在找不到。
  • 在任何情况下:FTP(或者更好地说:一般部署)并不是 PhpStorm 开发人员的首要任务(它已被多次提及),因此所有新功能都需要时间来实现。背后的“原因”之一:现代开发人员应该使用 VCS .. 并且 VCS 能够进行部署(在本地提交 .. 并在远程服务器上结帐——可能不像使用 FTP 等那么简单,但绝对可行的解决方案) . P.S. 我自己仍然不使用 VCS,我使用 (S)FTP 并面临同样的问题(我只记得修改了哪些文件.. 或使用同步,因为项目相当小)

标签: phpstorm


【解决方案1】:

转到文件>设置,在项目设置上选择部署。添加 FTP 服务器并将其标记为默认值。单击“确定”关闭对话窗口。

现在转到工具 > 部署 > 选项。选择您看到的动作触发器: 将更改的文件自动上传到默认服务器

希望对你有帮助!

http://www.jetbrains.com/phpstorm/webhelp/uploading-and-downloading-files.html#automaticUploadOnUpdate

【讨论】:

  • 这不是解决方案。因为在你保存文件后你去测试。并且只有在经过多次编码和测试之后,您才希望将修改后的文件上传到服务器。每次保存都上传是无稽之谈。我选择了 git-ftp 解决方案。
【解决方案2】:

使用 PHPStorm (Ctrl+K) 提交您的项目

它会打开一个窗口,里面有很多选项让你轻松提交

此外,还有“提交后”选项卡,您可以从您之前配置的默认服务器(工具>部署)中选择将文件上传到

这种方式在 VCS 的帮助下,只会将更改的文件上传到您的服务器

【讨论】:

    【解决方案3】:

    首先,我不建议在需要安全的项目中使用 FTP。(通过 FTP 连接密码和数据以非加密格式传输,因此很容易被窃取。唯一的例外是对上​​传的文件(可能是包)进行签名并且在对它们进行任何操作之前在服务器上检查数字签名。Afaik。PHAR 是默认库,但加密和签署任何 zip 都相对容易文件,如果将签名放入文件名中。不要将数字签名与 md5 或 sha1 哈希混淆。)

    通过使用 FTP 的简单项目,我使用 git-ftp

    安装(通过 windows,但我认为它也适用于每个系统)

    git bash
    $ cd ~
    $ git clone https://github.com/git-ftp/git-ftp git-ftp.git
    $ cd git-ftp.git && chmod +x git-ftp
    $ cp ~/git-ftp.git/git-ftp /bin/git-ftp
    

    配置

    .git/config
          [git-ftp "myscope"]
            url = ftp.domain.com/subdir
            user = user
            password = pass
    

    初始化

    git-ftp catchup -s myscope //by this the FTP and the local copy must be in perfect sync
    

    上传

    git ftp push -s myscope
    

    您必须使用.git-ftp-ignore 文件来定义您不想上传的内容。

    我通常将 git-ftp 与 git merge 和提交钩子一起使用。

    .git/hooks/post-commit
    .git/hooks/post-merge
    
        #!/bin/sh
        branch=`git rev-parse --abbrev-ref HEAD`
        if [ $branch == "master" ]; then
            git ftp push -s myscope
        fi
    

    这些 git-ftp 会通过 master 分支的任何更改自动上传。 Ofc 我只将 master 分支用于发布,对于开发我使用另一个分支...

    【讨论】:

      【解决方案4】:

      最佳实践惯例: PHPStorm 是围绕通常认为的“最佳实践”而设计的。考虑到这一点,部署的许多方面最好通过有一个版本控制系统来利用。当您通过 PHPStorm 提交时,提交对话框会提供选项以将更改列表中的文件显式部署到特定服务器(默认值是可配置的)

      备选方案 1: 有一个“与部署到 yourhost 同步”选项,可用于将远程服务器文件与本地文件进行比较。 “项目窗格”->(右键单击文件夹或文件)->部署->“与部署同步...”

      此选项会启动一个差异应用程序,该应用程序会比较您​​选择的文件/文件夹并提示应采取的操作(即与部署服务器同步方向/从部署服务器同步方向)

      我只在目标文件集上使用此功能,因为它对大型文件集(例如我的整个项目)存在性能问题。

      备选方案 2: 对于小文件集。使用“显式保存”选项暂时打开自动部署,然后重新保存您的文件。

      【讨论】:

      • 如果您不想在每次提交后部署而是在多次提交后仅部署更改,该怎么办?假设您正在使用分支开发新功能?合并回master时,你能以某种方式上传所有更改的文件吗?
      • - 如果您启用了版本控制集成,那么您更改的文件将被放置在更改列表中。
      • 我假设您已经配置了远程服务器。 - Settings->Deployment->Options["Upload external changes"]="Never" - 如果您启用了版本控制集成 -- 查看->"Tool Windows"->Changes -- 右键单击​​更改列表并选择“上传到 ” - 否则(禁用 VCS)通过右键单击“上传到 手动上传更改的文件
      • @LanceCaraccioli 我在更改窗口中没有“上传到服务器”选项。这在 PHPStorm 7.1.3 中仍然有效吗?
      • 我有 7.1.3。我正在使用 p4 CVS 集成。我右键单击更改列表,上下文菜单的最后一部分包含“上传到”。当然,这需要您配置部署服务器。也许它也必须被选为默认服务器。
      【解决方案5】:

      选中自动上传后,即使在我完成对 PHP 文件的所有更改之前,甚至在我点击“保存”按钮并导致脚本文件不完整之前,它也会自动上传文件。它还在其他标签页中上传文件。在 PhpStorm 中似乎没有对上传的精确控制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多