linux常用svn命令

yum install subversion

安装完成之后, 你可以通过以下命令查看是svnversion版本信息:

svn –version

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn addtest.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)

你不能直接使用 svn add * 命令,必须使用 “svn add * –force” 命令。
请放心,–force参数没有看上去的那么可怕,svn会自动判断,看这个文件是否值得添加,–force参数只不过是驱使 svn 去检查一个子目录,而不管这个子目录是否已经纳入管理
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [–no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [–force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改

svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH…]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

随机数的生成函数,这里贡献给大家。

首先是要用mt_rand()函数生成指定个数的随机数字;

然后使用array_unique()函数去重;

因为去重了;所以得到的数字就不够指定个数了;

所以;核心是要用while循环;直到得到指定个数的数字;

到这里基本可以是结束了;

对于追求完美的人来说;还可以再用个sort();

目的不是要用来排序;主要是将得到的数组key格式化;

用代码来说话;就如下;

<?php
/**
* 生成不重复的随机数
* @param  int $start  需要生成的数字开始范围
* @param  int $end    结束范围
* @param  int $length 需要生成的随机数个数
* @return array       生成的随机数
*/
function get_rand_number($start=1,$end=10,$length=4){
$connt=0;
$temp=array();
while($connt<$length){
$temp[]=mt_rand($start,$end);
$data=array_unique($temp);
$connt=count($data);
}
sort($data);
return $data;
}

当然;重点不是这个函数;重点是这个函数的思路;可以解决很多类似的问题;

6f8cd40d-4516-4c6d-b602-fb8671ab5530

搭建Git服务器

在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7×24小时开机并交换大家的修改。

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git

$ sudo apt-get install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

$ sudo chown -R git:git sample.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

小结

  • 搭建Git服务器非常简单,通常10分钟即可完成;
  • 要方便管理公钥,用Gitosis;
  • 要像SVN那样变态地控制权限,用Gitolite。

Vsftp的安装,Vsftp添加用户linux/windows

关于Vsftp的安装以及配置方法现总结如下(包括vsftp如何添加用户)不多说,直接看操作流程:

设置方法:

aliyun Linux(Redhat)安装vsftp软件

1.更新yum源

首先需要更新系统的yum源,便捷工具下载地址:update_source.zip。这里需要注意的是,目前文件无法传输,所以想要运行 update_source.sh 只能用文本打开,复制粘贴到阿里云服务器系统运行。

2.安装vsftp

使用yum命令安装vsftp

#yum install vsftpd -y

3.添加ftp帐号和目录

先检查一下nologin的位置,通常在/usr/sbin/nologin或者/sbin/nologin下。

使用下面的命令创建帐户,该命令指定了/ftp为用户test的家目录,您可以自己定义帐户名和目录:

#useradd -d /ftp -s /sbin/nologin test

修改该帐户密码:

#passwd test

修改指定目录的权限

#chown -R test:test /ftp

4.配置vsftp

编辑vsftp配置文件,命令如下:

#vi /etc/vsftpd/vsftpd.conf

将配置文件中”anonymous_enable=YES “改为 “anonymous_enable=NO”

取消如下配置前的注释符号:

#local_enable=YES

#write_enable=YES

#chroot_local_user=YES

#ascii_upload_enable 允许使用ascii码上传

#ascii_download_enable 允许使用ascii码下载

保存修改,按ESC键,输入:wq

5.修改shell配置

vi编辑/etc/shells,如果该文件里没有/usr/sbin/nologin或者/sbin/nologin(具体看当前系统配置)则追加进去

6.启动vsftp服务并测试登录

使用命令启动vsftp服务:

#service vsftpd start

然后用帐号test测试下是否可以登陆ftp。目录是/ftp  推荐用filezilla比较流行的ftp工具。

win下xampp配置memcache,Mac请看下回分解

关于memcache安装网上教程很多,但是呢,很多人按照教程安装后,出现一系列的报错,不知所踪,然后百思不得其解,我明明已经按照教程,从头到尾进行了安装呀,怎么还是不行呢?出现这个错误,只跟php_memcache.dll这个文件,已经php.ini的配置有关系。

先说安装memcache服务:

1、选择一个你想要安装的memcache服务端版本,有63位与32位的。这里你可以根据你自己的机子来进行选择。这并不影响php的配置。

2、进入doc命令,先dir到你memcache解压的目录

3、执行服务注册命令:memcached.exe -d install

4、卸载服务的命令:memcached.exe -d uninstall

5、启动服务的命令:memcached.exe -d start

6、停止服务器的命令:memcached.exe -d stop

7、检查你的memcache是否安装成功,使用start explorer命令查看:start explorer 127.0.0.1 11211  在执行这个命令后,如果打开了一个新窗口,OK那么说明memcache的安装是成功了。现在可以将精力放在php的配置上了。

php中memcache的配置步骤很简单,就分为三步:

1、找到合适的php_memcache.dll,放入到php/ext目录下。下载地址:http://pecl.php.net/package/memcache/3.0.8/windows

2、打开php.ini文件,写入配置信息

  1. extension=php_memcache.dll
  2. [Memcache]
  3. memcache.allow_failover=1
  4. memcache.max_failover_attempts=20
  5. memcache.chunk_size=8192
  6. memcache.default_port=11211</span>

这部分配置信息来源php手册,地址:http://php.net/manual/zh/ref.memcache.php(文章最底部)

3、重新启动服务器,进行测试

网上的教程基本上就是这三步,如果我只是想说到这里,那这篇博客也没有必要写了,我最开始也是按照这三步进行的,但是测试时,发生了最上面的错误。其实步骤并没有错,这里的关键是如何找到自己所需要的php_memcache.dll,以及php.ini中的配置(因为有的集成环境包含的不仅仅只有一个php.ini)。

这里我将自己的方法分享一下:

1、首先通过phpinfo()将我们的php相关信息显示出来,查看以下几个关键信息:

好的,从这里,我们可以知道,我们的php版本是5.5.15,我们使用的配置文件位置在:D:\xampp\php\php.ini(我们自己的配置信息也要写入到这个php.ini文件中去)

最后这段文字:API20121212,TS,VC11。TS:表示我们这个服务是线程安全,NTS:表示是非线程安全。VC11你只要记住就好了。x86是你这个服务的版本,也可能是x64。

然后了解到这些信息后,你就可以到:http://pecl.php.net/package/memcache/3.0.8/windows这个地址中,找到你对应的版本。比如,以我截图为例,我应该选择的版本

php5.5 ts x86的。就通过这几个信息就可以定位了。

下载后,解压文件,里边有很多文件,你只需要把php_memcache.dll拷贝到php/ext文件中去,然后填写配置文件即可。然后重新启动,100%可以了。

转自:菜鸟coder博客。经过本人修正。

善用mysql中join的on条件内可以带and建立多条件join

mysql join on 可以带and,例如:
SELECT pa.name as name, pa.sn as sn, re.created, sl.sn, re.phase, rd.times, ABS(sl.quantity) as quantity, dr.name as dname, dr.specifications as specifications
FROM rr AS re JOIN red AS rd ON re.id = rd.rid JOIN drug AS dr ON dr.id = rd.did JOIN {{bbbb}} AS sl ON re.id = sl.r_id AND sl.d_id = rd.d_id JOIN pp AS pa ON pa.id = re.p_id
WHERE $where AND sl.receive_id >0
用于将被join表没有对应数据的时候也可以将主join表的数据显示出来

QQ截图20160530000552

phpcms更换编辑器由CKEditor为UEditor,简单两步,没有网上说的那么复杂…

phpcms更换编辑器由CKEditor为UEditor,简单两步,没有网上说的那么复杂,下面直接上操作图:

QQ截图20160526000200 QQ截图20160526000323

就以上 两步骤,去UEditor官网下载源码,这个谁都会。下载完直接丢进根目录下/statics/js/目录即可。如果还有不会的,那我就没办法。

以上仅为分享麦芒个人心得,希望广大码农们,一旦解决了一些问题,都把它们分享出来,让朋友们少走弯路。

看到了Windows的未来—–windows-Bash-Ubuntu

windows的未来渐渐的走向linux模式,也再朝向开发者靠近了,这是好事吗?

QQ截图20160408225539

s_999ee5a9fb914860bd1d1907a5d98ba0

今天凌晨的Build 2016大会上,微软为开发者尤其是Linux/Unix的开发者带来了好消息,Windows 10将原生整合Linux命令行工具Bash,也就意味着不再需要借助虚拟机进行编译工作。

我们知道,绝大多数Linux发行版都使用BASH作为其默认的标准Shell,地位极其重要。

而且横向对比Windows平台的cmd来看Linux的终端字体好看、功能强大,微软称,Bash命令行工具将在Windows应用商店中提供下载

此次,Bash能进驻Windows,得益于和著名Linux发行商Canonical的合作。

Git 常用命令整理

最近在公司的服务器上安装了Git Sever,开始从SVN转向到Git了,整理了一些在Git常用的命令。

取得Git仓库

初始化一个版本仓库

git init

Clone远程版本库

git clone git@xbc.me:wordpress.git

添加远程版本库origin,语法为 git remote add [shortname] [url]

git remote add origin git@xbc.me:wordpress.git

查看远程仓库

git remote -v

提交你的修改

添加当前修改的文件到暂存区

git add .

如果你自动追踪文件,包括你已经手动删除的,状态为Deleted的文件

git add -u

提交你的修改

git commit –m &quot;你的注释&quot;

推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]

git push origin master

查看文件状态

git status

跟踪新文件

git add readme.txt

从当前跟踪列表移除文件,并完全删除

git rm readme.txt

仅在暂存区删除,保留文件在当前目录,不再跟踪

git rm –cached readme.txt

重命名文件

git mv reademe.txt readme

查看提交的历史记录

git log

修改最后一次提交注释的,利用–amend参数

git commit –amend

忘记提交某些修改,下面的三条命令只会得到一个提交。

git commit –m &quot;add readme.txt&quot;
git add readme_forgotten
git commit –amend

假设你已经使用git add .,将修改过的文件a、b加到暂存区

现在你只想提交a文件,不想提交b文件,应该这样

git reset HEAD b

取消对文件的修改

git checkout –- readme.txt

基本的分支管理

创建一个分支

git branch iss53

切换工作目录到iss53

git chekcout iss53

将上面的命令合在一起,创建iss53分支并切换到iss53

git chekcout –b iss53

合并iss53分支,当前工作目录为master

git merge iss53

合并完成后,没有出现冲突,删除iss53分支

git branch –d iss53

拉去远程仓库的数据,语法为 git fetch [remote-name]

git fetch

fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并

git pull

查看远程仓库的信息

git remote show origin

建立本地的dev分支追踪远程仓库的develop分支

git checkout –b dev origin/develop

个人认为比较有用的win10系统快捷键

win10系统渐渐替换了win8.1,一些改进确实耳目一新,不过最大特点还是回归了,下面是一些个人认为比较重要的快捷键:

Win+C:强制调出Charm栏。

Win+左/右/上/左上/左下/右上/右下:将窗口快速缩放至1/2分屏、1/4分屏,其中1/4分屏为Win10新增功能,对应快捷键为Win+左上/左下/右上/右下。

Win+E:调出“主页”窗口。“主页”是Win10新增功能,包含最近访问文件夹、最近访问文件、收藏夹等,以资源管理器作为载体。

Win+Home:仅保留当前窗口,其余窗口最小化。

Win+Enter:直接启动“讲述人”。

Win+数字键:快速打开任务栏上已固定应用,比如Win+1打开第一个应用、Win+2打开第二个应用……以此类推,同时支持Metro应用。

Win+T:在任务栏图标间切换,但不打开,相当于鼠标悬停。

Alt+Tab:窗口切换器,当然Win10已经将它改进了,新版缩略图更大,并且是全屏显示。

Win+Tab:Win7时代的Flip3D(3D窗口切换器),到了Win10中变成了虚拟桌面切换器。嗯!和点击任务栏上那个按钮一个效果!

Ctrl+Shift+ESC:直接打开任务管理器。

Alt+左/右/上:快速跳转至上一个文件夹/下一个文件夹/父文件夹(仅限资源管理器)。

F11:沉浸式传统窗口布局(仅限传统程序)。

Win+Ctrl+左/右:切换当前虚拟桌面。

Win+Ctrl+D:建立新虚拟桌面。

Win+Ctrl+F4:关闭当前虚拟桌面(已打开窗口会自动移动到下一个桌面,不会丢失!)。

Win+D:显示传统桌面(即窗口最小化,沉浸式Metro需按动两下)。

Win+I:打开Charm栏→设置菜单(非新版Charm菜单)。

Win+X:打开简易版开始菜单,这个用来启动一些系统级程序还是很方便的。

Win+Prt Sc:屏幕截图。按下该快捷键后,屏幕会瞬间暗一下,并伴有“咔嚓”一声,视觉感和手机上的截屏软件很像,截图自动存放至“图片”文件夹。

Ctrl+V:这是Win10命令提示符里新增的,功能就是将剪切板内容直接粘贴到提示符内。而在此之前,这组快捷键所能得到的结果,仅仅是一个^v。

以上是笔者结合自己经验,挑选的一些日常使用率较高的快捷键,诸如大家熟悉的Win+L、Win+R之类并未涉及。当然Win10是一款全新系统,短短两三周的试用是不可能将其探寻完整的。如果你在试用过程中也发现了一些不一样的按钮,也欢迎和我们一同分享,祝大家Win10玩得愉快!

win10|系统快捷键

win10|系统快捷键