如果您有多个不相关的项目,将它们放在同一个存储库中是一个好主意吗?
myRepo/projectA/trunk
myRepo/projectA/tags
myRepo/projectA/branches
myRepo/projectB/trunk
myRepo/projectB/tags
myRepo/projectB/branches
Run Code Online (Sandbox Code Playgroud)
或者你会为每个创建新的存储库?
myRepoA/trunk
myRepoA/tags
myRepoA/branches
myRepoB/trunk
myRepoB/tags
myRepoB/branches
Run Code Online (Sandbox Code Playgroud)
各自的优点和缺点是什么?我目前所能想到的只是你得到了混合版本号(那是什么?),svn:externals除非存储库实际上是外部的,否则你不能使用它.(我认为?)
我问的原因是因为我正在考虑将我的多个repos合并为一个,因为我的SVN主机已开始按每个回购计费.
我知道答案就在那里,但我非常愚蠢,如果它让我面目全非,可能无法识别解决方案.
我在Mac上,通过SSH隧道连接到SVN服务器.我ssh-add privateKey.txt每次都要连接到SVN服务器(两个Cornerstone和Xcode都连接到SVN).
有没有办法在某处"保存"密钥,所以我不必每次都这样做?把它添加到我的钥匙串?一些配置文件?启动脚本?
在尝试使用git控件获取项目的旧svn转储时,我遇到了一个有趣的问题.每当我运行时git svn,我都会收到一条错误消息,说它不是git命令,但是我可以使用它来获取文档git help.我的安装有什么问题,或者我在这里遗漏了什么?
编辑:我可能还应该提到我在Windows XP下运行msysGit版本1.6.1.9.g97c34,我得到的错误是:
$ git svn
git: 'svn' is not a
git-command. See 'git --help'.
Did you mean one of these?
fsck
show 使用PHP,Perl或Python(最好是PHP),我需要一种方法来查询SVN数据库并找出发送给SVN的最新修订号.除此之外我不需要任何其他东西.它需要是非密集型的(所以我每隔5分钟就做一次cron工作; SVN的性能不应该受到影响).
SVN位于我的Intranet上,但不是我的特定计算机.
我安装了SVN,但没有为PHP/Perl/Python安装绑定.我正在运行Windows XP,但我更喜欢独立于平台的解决方案,它也适用于Linux.如果您有一个仅限Linux(或仅限XP)的解决方案,那也会有所帮助.
我不希望任何命名的目录build或dist进入我的SVN,无论它在树中有多深.
这可能吗?在git我刚刚放
build
dist
Run Code Online (Sandbox Code Playgroud)
在我.gitignore的根部,它递归地忽略.我怎么用svn做这个?请不要告诉我在每个父母的目录上做一个propset ...
我尝试在一次拍摄中跨不同目录提交多个文件,如下所示,
svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc
Run Code Online (Sandbox Code Playgroud)
因为,我想从提交列表中排除一些文件,所以我将每个文件名放在命令行中,如上所述.我把它放在记事本中,它来了25个文件.当我在命令行上复制并粘贴它时,最后几个文件丢失,我想这可能是命令行缓冲区限制(?).有什么选择我可以增加缓冲区长度吗?
有没有选项我可以将所有文件放在一个文本文件中,并将其作为参数提供给svn commit?
我有一些文件在svn添加之前已经可执行.他们有svn:executable属性集.现在,在没有可执行位的情况下检查了一些其他文件,并且我想设置svn:executable属性:
$ svn propset svn:executable on *.cgi
Run Code Online (Sandbox Code Playgroud)
然后我检查状态,甚至修改了svn:executable的文件:
$ svn diff
Property changes on: a.cgi
___________________________________________________________________
Modified: svn:executable
-
+ *
Property changes on: b.cgi
___________________________________________________________________
Added: svn:executable
+ *
Run Code Online (Sandbox Code Playgroud)
不应修改a.cgi.我想以与在其他文件上相同的方式添加要设置的svn:executable位,但是无法找出执行它的命令.
我想知道在svn从控制台进行操作时是否有办法保存我的Subversion密码.控制台是我唯一的选择.当我尝试执行任何Subversion操作时,例如svn commit,它每次都会提示输入帐户密码.有没有办法以某种方式保存此密码,以便我不必每次都重新键入它?
Rsync包含一个漂亮的选项--cvs-exclude"以与CVS相同的方式忽略文件",但CVS已经过时多年.有没有办法让它也排除现代版本控制系统(Git,Mercurial,Subversion)会忽略的文件?
例如,我从GitHub检出了很多Maven项目.通常它们.gitignore至少包括一个列表target,默认的Maven构建目录(可能存在于顶层或子模块中).由于这些目录的内容完全是一次性的,并且它们可能远远大于源代码,因此我想在使用rsync进行备份时将它们排除在外.
当然我可以明确地--exclude=target/但是会意外地抑制恰好被命名target并且不应该被忽略的不相关目录.
我可以为我的磁盘上的任何.gitignore,.hgignore或svn:ignore属性中提到的所有文件名和模式提供完整的绝对路径列表,但这将是一个巨大的列表,必须由某种脚本生成.
由于rsync没有内置支持除CVS之外的VCS检出,是否有任何好的技巧可以为它们提供忽略模式?或者某种回调系统,可以询问用户脚本是否应该包含给定的文件/目录?
更新:--filter=':- .gitignore'正如LordJavac所建议的那样,Git和--filter=:CCVS 一样好,至少在我发现的例子中,尽管不清楚语法是否完全匹配.--filter=':- .hgignore'对Mercurial不起作用; 例如,rsync不能将.hgignore包含类似^target$(Git的Mercurial等价物/target/)的行视为正则表达式.对于Subversion来说似乎没什么用,因为你需要.svn/dir-prop-base为1.6或更早的工作副本解析,并且为1.7或更高版本的工作副本沮丧地举手.
我在subversion中有一个项目,我正在使用Eclipse开发.我从Eclipse内部的svn存储库中完成了原始检出.一段时间以来一切都很好,然后由于某种未知的原因,Eclipse(特别是:Ganymede中的subclipse)不再认识到我的项目受到svn控制.团队上下文菜单仅显示基本的"应用补丁"/"共享此项目"菜单选项.从shell,我仍然可以使用svn命令行工具更新项目,所以我知道svn凭证仍然有用.在Eclipse的同一副本中的subversion下的其他项目仍然有效.
我意识到我可以删除本地副本并再次检查它,但我宁愿了解出了什么问题 - 解决问题,而不是掩盖症状.Eclipse存储哪些项目受版本控制的知识?我查看了.project文件和.settings目录,但是看不到任何明显提及的svn性质或类似的东西,即使在仍然正常工作的项目中也是如此.