我是从SVN开始的。有没有办法配置subclipse自动与repo同步,以便知道文件何时被尽快修改?
答案 0 :(得分:5)
如果是Subversive(我相信,在Subclipse的情况下也应该提供相同的选项),Synchronize视图允许自动同步。
使用某些项目的上下文菜单中的Team / Synchronize初始化同步,或打开Team Synchronizing透视图,然后使用Synchronize视图的Synchronize按钮选择同步项目集(该按钮是该按钮的第一个按钮)查看工具栏)。
然后执行同步,并在那里显示更改。此时,您可以从视图菜单中选择Schedule ...选项(Synchronize视图右上角附近的向下三角形图标),然后您可以设置同步。
AFAIK此同步不会自动更新您的工作区(这是一个好主意,例如必须手动进行冲突解决),但至少您可以在需要时查看更改。
答案 1 :(得分:3)
你真的不想这样做。与存储库同步是一项繁重的操作,有很多副作用。例如,您可以立即更改存储库中正在更改的文件。您不希望在工作时与您和其他人的更改不匹配。您希望工作,然后一起更新所有文件并解决冲突(如果有)
答案 2 :(得分:2)
在上下文菜单中(右键单击项目),应该有一个选项“Team>与存储库同步”。
我确实发现this tutorial很有用。
答案 3 :(得分:2)
据我所知,subclipse没有提供这样的选项。您可以编写一个使用SVN命令行工具定期执行更新的cron作业,但我不建议这样做。您无法自动与SVN同步,因为更新可能会导致无法自动合并的冲突。
答案 4 :(得分:0)
虽然我同意在某些情况下拥有自动提交功能可能是一个坏主意,但可能有一些原因导致您无论如何都希望拥有此选项。
我创建了一个小的EASE脚本,取代了我的常规保存键绑定(ctrl + s)。它首先保存文件,尝试更新文件(如果可能还会自动合并版本,或者在脚本终止的情况下产生冲突)并最后提交文件。
// ********************************************************************************
// name : SaveUpdateCommit
// keyboard : CTRL+S
// toolbar : PHP Explorer
// script-type : JavaScript
// description : Save a file, update from the repository and commit automatically
// ********************************************************************************
var UI = loadModule("/System/UI");
UI.executeUI(function(){
var editor = UI.getActiveEditor();
editor.doSave(null);
var site = editor.getSite();
var commandService = site.getService(org.eclipse.ui.commands.ICommandService);
var handlerService = site.getService(org.eclipse.ui.handlers.IHandlerService);
var subclipse = org.tigris.subversion.subclipse.core.SVNProviderPlugin.getPlugin();
try
{
var file = editor.getEditorInput().getFile();
}
catch(e)
{
return;
}
var filePath = file.getFullPath();
var project = file.getProject();
var projectPath = project.getWorkingLocation(subclipse.toString());
var workspace = project.getWorkspace();
var localFile = org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot.getSVNFileFor(file);
localFile.refreshStatus();
if(localFile.isDirty()){
var remoteFile = localFile.getBaseResource();
var empty = java.lang.reflect.Array.newInstance(org.eclipse.core.resources.IResource, 0);
var commitFiles = java.lang.reflect.Array.newInstance(org.eclipse.core.resources.IResource, 1);
commitFiles[0] = remoteFile.getResource();
var update = new org.tigris.subversion.subclipse.ui.operations.UpdateOperation(editor, remoteFile.getResource(), org.tigris.subversion.svnclientadapter.SVNRevision.HEAD);
update.run(null);
var commit = new org.tigris.subversion.subclipse.ui.operations.CommitOperation(editor, empty, empty, empty, commitFiles, "AutoCommit", false);
commit.run(null);
}
为此,您需要安装Eclipse EASE(http://download.eclipse.org/ease/update/release)并通过设置使此脚本可用。此外,脚本需要UI访问,同样需要在设置中配置。
因此,根据您的需求,您可能希望将此行为更改为频繁更新。我从未在日食中玩过计时器,但我想这是可能的。