svn的一些问题

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

svn的一些问题

#1

帖子 gzbao9999 » 2010-09-29 12:02

目前在用svn+eclipse做java开发
大部分人用的都是myeclipse 我在linux下用的eclipse+wtp

实际使用中遇到一些问题
因为项目的最初提交是从windows下的myeclipse里提交的
所有myeclipse的配置文件以及编译后的.class文件都被提交上去

因为更新到提交.class经常会导致某些人的myeclipse不再自动编译项目,
我在linux下的时候是从命令行里svnchectout后,有选择的cp到eclipse项目下。检出问题虽是搞定了,提交的时候又是个麻烦。

所以最近有些想法:
项目真正需要提交到svn的部分:各种源代码和项目本身的配置文件(而这些格式在ecplise中的各个版本中其位置都是一样的)
而实际使用svn时由于提交其他部分造成了很多困扰。
人为的约定上传某些文件和目录丝毫没有什么安全感和控制性可言,这也不应该是注意力应该关注的地方。
------------------------------------------------------------------------------------------------------------------------------------
真正的问题是svn有没有办法在服务端控制可以上传的文件类型 或者拒绝某个名称的目录上传?
svn是否有我所需要的控制机制?(btw:慢慢火起来的git中有没有解决方案?)
气血鼓荡,身体发胀,偶飘上头,三时舒畅
头像
Jade_Morgan
帖子: 187
注册时间: 2007-12-14 22:29

Re: svn的一些问题

#2

帖子 Jade_Morgan » 2010-09-29 12:27

我用的是ECLIPSE + 插件SUBCLIPSE。SUBCLIPSE好像在提交的时候会自动跳过生成CLASS文件的目录。不会有CLASS文件被提交上SVN的问题
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re: svn的一些问题

#3

帖子 gzbao9999 » 2010-09-29 16:31

我尝试了用启用pre-commit的方式来拦截不需要的文件提交请求

代码: 全选

#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
SrcPath=`svnlook changed -t $TXN $REPOS`
target=`echo $SrcPath| awk '{print $2}'`
if [ `echo $target|grep -P '^trunk/\w+/\..*'` ];then
echo  "the file you commit contains some path that the pre-commit hook not permit,\nit is the config file of the different distributions of eclipse,\nplease ignore these files in you eclipse.\n." 1>&2 
 exit 1;
fi
exit 0
实际测试后发现一个大遗憾,提交一组请求时,请求中存在个别被pre-commit识别为不合法的路径,则所有请求均被拒绝 :em25
上次由 gzbao9999 在 2010-09-30 15:03,总共编辑 2 次。
气血鼓荡,身体发胀,偶飘上头,三时舒畅
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re: svn的一些问题

#4

帖子 gzbao9999 » 2010-09-29 17:26

为了避免上面的问题
可以在客户端设置, 添加至svn:ignore进行辅助控制

首先要先在eclipse里面把隐藏 .*文件的设置关掉
在package explorer框界面的右上角的下箭头中设置过滤器Filters,解除对第一项.*resources的隐藏控制
然后可以在需要的目录或文件上右键进行team->add to svn:ignore操作
完成后恢复对.*resources的隐藏控制即可

恩这样还算能满意,服务端强制控制、客户端为了方便不得不进行配合 :em04
气血鼓荡,身体发胀,偶飘上头,三时舒畅
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re: svn的一些问题

#5

帖子 gzbao9999 » 2010-09-30 15:07

svn的文档中提到 pre-commit文件支持各种语言的实现
悲剧的是java中不允许类名出现 - 符号。
:em25 兼容windows下实现的想法又餐具了 只好用bat或perl来实现了
气血鼓荡,身体发胀,偶飘上头,三时舒畅
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re: svn的一些问题

#6

帖子 gzbao9999 » 2010-09-30 17:10

写了个windows下的pre-commit.bat

代码: 全选

svnlook changed -t %2 %1 |grep -P "trunk/\w+/\..*" 
if %errorlevel% equ 1 exit 0
echo the file you commit contains some path that the pre-commit hook not permit, 1>&2
echo it is the config file of the different distributions of eclipse, 1>&2
echo please ignore these files in you eclipse. 1>&2
exit 1
气血鼓荡,身体发胀,偶飘上头,三时舒畅
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re: svn的一些问题

#7

帖子 gzbao9999 » 2010-10-18 12:01

写了个perl的

代码: 全选

#!/usr/bin/perl
$REPOS=$ARGV[0];
$TXN=$ARGV[1];
#$SVNLOOK=/usr/bin/svnlook;
$srcPath=`svnlook changed -t $TXN $REPOS`;
@array=split(/\s+/,$srcPath);
$target=@array[1];
if ($target =~ /^trunk\/\w+\/\..*/ ){
print STDERR "the file you commit contains some path that the pre-commit hook not permit,\nit is the config file of the different distributions of eclipse,\nplease ignore these files in you eclipse.\nafter that if you still have problem go to ask NoTattoo.\n";
exit 1;
};
exit 0;
气血鼓荡,身体发胀,偶飘上头,三时舒畅
回复