当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : svn的一些问题
帖子发表于 : 2010-09-29 12:02 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
目前在用svn+eclipse做java开发
大部分人用的都是myeclipse 我在linux下用的eclipse+wtp

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

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

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


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
2 楼 
 文章标题 : Re: svn的一些问题
帖子发表于 : 2010-09-29 12:27 
头像

注册: 2007-12-14 22:29
帖子: 187
送出感谢: 0 次
接收感谢: 1
我用的是ECLIPSE + 插件SUBCLIPSE。SUBCLIPSE好像在提交的时候会自动跳过生成CLASS文件的目录。不会有CLASS文件被提交上SVN的问题


页首
 用户资料  
 
3 楼 
 文章标题 : Re: svn的一些问题
帖子发表于 : 2010-09-29 16:31 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
我尝试了用启用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 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: svn的一些问题
帖子发表于 : 2010-09-29 17:26 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
为了避免上面的问题
可以在客户端设置, 添加至svn:ignore进行辅助控制

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

恩这样还算能满意,服务端强制控制、客户端为了方便不得不进行配合 :em04


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
5 楼 
 文章标题 : Re: svn的一些问题
帖子发表于 : 2010-09-30 15:07 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
svn的文档中提到 pre-commit文件支持各种语言的实现
悲剧的是java中不允许类名出现 - 符号。
:em25 兼容windows下实现的想法又餐具了 只好用bat或perl来实现了


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
6 楼 
 文章标题 : Re: svn的一些问题
帖子发表于 : 2010-09-30 17:10 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
写了个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


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
7 楼 
 文章标题 : Re: svn的一些问题
帖子发表于 : 2010-10-18 12:01 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
写了个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;


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译