Java 自动SVN同步Eclipse
我从SVN开始。有没有办法将subclipse配置为自动与回购同步,以便尽快知道文件何时被修改?在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步” 我确实觉得很有用。在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步”Java 自动SVN同步Eclipse,java,eclipse,subclipse,Java,Eclipse,Subclipse,我从SVN开始。有没有办法将subclipse配置为自动与回购同步,以便尽快知道文件何时被修改?在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步” 我确实觉得很有用。在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步” 我确实觉得有用。据我所知,subclipse没有提供这样的选项。您可以编写一个cron作业,使用SVN命令行工具定期执行更新,但我不建议这样做。您无法自动与SVN同步,因为更新可能会导致无法自动合并的冲突。据我所知,subcl
我确实觉得有用。据我所知,subclipse没有提供这样的选项。您可以编写一个cron作业,使用SVN命令行工具定期执行更新,但我不建议这样做。您无法自动与SVN同步,因为更新可能会导致无法自动合并的冲突。据我所知,subclipse不提供此类选项。您可以编写一个cron作业,使用SVN命令行工具定期执行更新,但我不建议这样做。您无法自动与SVN同步,因为更新可能会导致无法自动合并的冲突。您确实不想这样做。与存储库同步是一项繁重的操作,有很多副作用。例如,您现在可以更改存储库中正在更改的文件。您不希望在工作时您和他人的更改不匹配。您希望工作,然后一起更新所有文件,并解决冲突(如果有)您确实不想这样做。与存储库同步是一项繁重的操作,有很多副作用。例如,您现在可以更改存储库中正在更改的文件。您不希望在工作时您和他人的更改不匹配。您希望工作,然后一起更新所有文件,并解决冲突(如果有的话)在Subversive情况下(我相信,在Subclipse情况下也应该提供相同的选项)。Synchronize视图允许自动同步 使用某些项目的关联菜单中的“团队/同步”初始化同步,或打开“团队同步”透视图,并使用“同步”视图的“同步”按钮(该按钮是视图工具栏的第一个按钮)选择同步项目集 然后执行同步,并在其中显示更改。此时,您可以选择时间表。。。选项(位于“同步”视图右上角附近的指向下的三角形图标),您可以在那里设置同步 AFAIK此同步不会自动更新您的工作区(这是一个好主意,例如冲突解决必须手动进行),但至少您可以在需要时查看更改。对于Subversive(我相信,Subclipse也应该提供相同的选项)同步视图允许自动同步 使用某些项目的关联菜单中的“团队/同步”初始化同步,或打开“团队同步”透视图,并使用“同步”视图的“同步”按钮(该按钮是视图工具栏的第一个按钮)选择同步项目集 然后执行同步,并在其中显示更改。此时,您可以选择时间表。。。选项(位于“同步”视图右上角附近的指向下的三角形图标),您可以在那里设置同步
AFAIK此同步不会自动更新您的工作区(这是一个好主意,例如冲突解决必须手动进行),但至少您可以在需要时查看更改。尽管我同意在某些情况下,使用自动提交功能可能不是一个好主意,也许有一些原因可以让你选择这个选项 我创建了一个小的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);
}
为此,您需要安装eclipseease()并通过设置使此脚本可用。此外,脚本需要UI访问,这同样需要在设置中配置
因此,出于您的需要,您可能希望将该行为更改为频繁更新。我从来没有在eclipse中使用过计时器,但我想这是可能的。尽管我同意在某些情况下使用自动提交功能可能不是一个好主意,但可能还是有一些原因让您希望使用此选项 我创建了一个小的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);
}
为此,您需要安装eclipseease()并通过设置使此脚本可用。此外,脚本需要UI访问,这同样需要在设置中配置
因此,出于您的需要,您可能希望将该行为更改为频繁更新。我从来没有在eclipse中玩过计时器,但我想这是可能的。@ChyBy希望自动执行此操作。@AlexR我认为这是不可能的,我同意你的回答,不应该这样做,因为SVN系统不被认为是“实时”系统。@AlexR然而,我认为CHyBy不想自动提交,而只是自动同步资源,即对总体情况的“实时”监控。@CHyBy希望自动执行此操作。@AlexR我认为这是不可能的,我同意你的回答,即作为SVN,不应该这样做