Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动SVN同步Eclipse_Java_Eclipse_Subclipse - Fatal编程技术网

Java 自动SVN同步Eclipse

Java 自动SVN同步Eclipse,java,eclipse,subclipse,Java,Eclipse,Subclipse,我从SVN开始。有没有办法将subclipse配置为自动与回购同步,以便尽快知道文件何时被修改?在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步” 我确实觉得很有用。在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步” 我确实觉得有用。据我所知,subclipse没有提供这样的选项。您可以编写一个cron作业,使用SVN命令行工具定期执行更新,但我不建议这样做。您无法自动与SVN同步,因为更新可能会导致无法自动合并的冲突。据我所知,subcl

我从SVN开始。有没有办法将subclipse配置为自动与回购同步,以便尽快知道文件何时被修改?

在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步”

我确实觉得很有用。

在上下文菜单(右键单击project)中,应该有一个选项“团队>与存储库同步”


我确实觉得有用。

据我所知,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,不应该这样做