windows下phpstorm的高效使用

开始前的准备

操作系统: windows

工具:

svn需要1.7以上的版本,1.7以上的版本只会在根目录创建一个.svn目录。

如果需要用到svn命令行,则在安装TortoiseSVN时需要选中command line tools选项,默认是不会安装命令行工具的。

git和svn同时作为代码版本控制工具

当版本服务器用的是svn,而本地希望使用git时,可以将git和svn结合使用。

git自带有git-svn的命令作为和Subversion的桥接工具,具体可以参考Git与Subversion

本文主要介绍同时使用git和TortoiseSVN两个工具的方法。

由于本人更喜欢使用命令行工具,因此以下介绍都是基于命令行。

为便于使用,可以将git和svn的bin目录放到环境变量中。

1. 拉取代码

运行Git BashGit Bash窗口中使用svn co http://svn/repo从svn版本服务器中拉取代码

2. 配置.gitignore和.svnignore

.gitignore.svnignore分别忽略.svn.git目录。

svn忽略文件的使用可参考Subversion 忽略文件与目录

3. 本地和远程更新和提交代码

在本地使用git updategit commit更新和提交代码。

向远程更新和提交代码使用svn upsvn ci

ignore-on-commit

有时候,本地修改的文件不希望提交到版本服务器。此时可以将代码分配到不同的changelist中,将要提交的代码加入到work的changelist中,不想提交的代码加入到ignore-on-commitchangelist,在提交时只提交work的changelist就可以了。

具体代码如下:

D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'

D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties

D:\workspace\trunk>svn status

--- Changelist 'work':
        src\java\com\corp\sample\Main.java
M       src\java\com\corp\sample\view\View.java
        src\resource\icon.ico

--- Changelist 'ignore-on-commit':
M       src\conf\db.properties

D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending        src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.
复制代码

参考: SVN: Is there a way to mark a file as “do not commit”?

我们本地提交代码的权限是被控制的,只能通过patch提交代码,因此结合设置的changelist可以这样打patch:svn diff --cl work > fixBug.patch

配置phpstorm

终端工具配置

在windows下,phpstorm默认使用的是cmd.exe作为terminal工具。而cmd是无法运行bash文件的,因此要将phpstorm的terminal工具换成Git Bash。步骤如下:

在phpstorm中依次进入File-->Settings-->Tools-->Terminal

画出的红框中的路径一定要带双引号,不然运行要报错。

快捷工具配置

在phpstorm中,配置了必要的快捷工具可以提高自身工作效率。

例如我的一个项目不同的目录是从多个版本服务器中拉取的代码,我如果要更新某部分代码,则需要进入到很深的目录中才能执行svn up。如果配置了快捷工具,我只需要使用快捷键Shift+Ctrl+A就可以调出搜索框找到命令,然后回车运行命令即可,方便快捷。

具体的配置如下:

依次进入File-->Settings-->Tools-->External Tools

配置好命令和工作目录(命令会在此目录运行)。

快捷键配置

合理的配置快捷键可以提高工作效率。

我平时使用最多的是projectStructureVersion ControlTerminalDebug,因此重新将它们配置为更方便的'Alt+1/2/3/4/5'。

编写自动化脚本提高效率

一般情况下,在windows下获取带目录结构的补丁文件很麻烦。为了高效的解决这个问题,可以自己编写shell脚本来解决。例如如下脚本:

#! /bin/bash
# 文件名: doPatch
#文件用途: 打包补丁文件(包含目录结构)并上传到目标主机

echo '请输入起始COMMIT_ID'
read beginCommitId

echo '请输入结束COMMIT_ID(默认为HEAD)'
read endId
endCommitId=${endId:='HEAD'}

echo 'PATCH_NAME(默认为patch)'
read name
patchName=${name:='patch'}

echo 'HOST_IP'
read hostIp


createTime=`date "+%F-%H%M"`
patchPath='/home/hikwang/Downloads/tmp/patch/'
fileName=$patchName'_'$createTime'.zip'
zipFile=$patchPath$fileName

# 检查补丁目录是否存在
if [ ! -d "$patchPath" ];then
    mkdir -p "$patchPath"
fi

if [[ $? -eq 0 ]];then
    #git diff-tree -r --no-commit-id --name-only $commitId | xargs “C:\Program Files\7-Zip\7z” a $zipFile
    git diff --name-only $beginCommitId $endCommitId | xargs  “C:\Program Files\7-Zip\7z” a $zipFile

    if [ $? -eq 0 ];then
        echo '补丁创建成功:'$zipFile

        if [[ $hostIp -ne null ]];then
            scp $zipFile 'root@'$hostIp':/home/'

            if [ $? -eq 0 ];then
                echo '上传成功:/home/'$fileName
                exit 0
            else
                echo '上传失败!'
                exit 1
            fi
        else
            exit 0
         fi
    else
        echo "补丁创建失败";
        exit 1
    fi
fi
复制代码

在phpstorm的terminal中运行以上脚本并在phpstorm的Version Control中找到要用的commit_id就可以打包出补丁文件。

但是shell脚本文件由于没法加入windows环境变量(shell脚本加入windows的环境变量也无法运行),使用时必须用脚本文件的绝对路径很不方便。

由于在Git Bash下可以直接运行scp等命令,所以我想只要将自定义命令放到和scp命令同一个目录下,就可以在Git Bash全局使用了。

找到scp所在目录,我的是'L:\softwares\Git\usr\bin',将我的脚本文件’doPatch‘放到该目录。在Git Bash直接运行doPatch,能正常运行。

转载于:https://juejin.im/post/5ce909076fb9a07eaa2257d3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值