Автоматическая синхронизация SVN Eclipse - PullRequest
1 голос
/ 14 июля 2011

Я начинаю с SVN.Есть ли способ настроить subclipse для автоматической синхронизации с репо, чтобы узнать, когда файл был изменен как можно скорее?

Ответы [ 5 ]

5 голосов
/ 14 июля 2011

В случае Subversive (и я полагаю, такая же опция должна быть доступна и в случае Subclipse) представление Synchronize разрешает автоматическую синхронизацию.

Инициализируйте синхронизацию, используя Team / Synchronize из контекстного меню некоторых проектов, или откройте перспективу Team Synchronizing и выберите набор синхронизированных проектов с помощью кнопки Synchronize в представлении Synchronize (эта кнопка является первой кнопкой панель инструментов просмотра).

Затем выполняется синхронизация, и изменения отображаются там. На этом этапе вы можете выбрать опцию «Расписание ...» в меню представления (значок треугольника, направленный вниз, в верхнем правом углу представления «Синхронизация»), и там вы можете установить синхронизацию.

AFAIK эта синхронизация не обновляет ваше рабочее пространство автоматически (это разумная идея, например, разрешение конфликтов должно происходить вручную), но, по крайней мере, вы можете посмотреть на изменения при необходимости.

3 голосов
/ 14 июля 2011

Вы действительно не хотите этого делать. Синхронизация с репозиторием - тяжелая операция с множеством побочных эффектов. Например, вы можете изменить файл, который сейчас изменяется в хранилище. Вы не хотите получать несоответствие ваших и других изменений во время работы. Вы хотите работать, а затем обновить все файлы вместе и разрешить конфликты (если есть)

2 голосов
/ 14 июля 2011

Насколько я знаю, subclipse не предоставляет такой возможности.Вы можете написать задание cron, которое использует инструменты командной строки SVN для регулярного обновления, но я бы не рекомендовал этого.Вы не можете автоматизировать синхронизацию с SVN, потому что обновление может вызвать конфликты, которые не могут быть автоматически объединены.

2 голосов
/ 14 июля 2011

В контекстном меню (щелкните правой кнопкой мыши по проекту) должна быть опция «Команда> Синхронизировать с репозиторием».

Я нашел этот урок полезным.

0 голосов
/ 23 февраля 2017

Хотя я согласен с тем, что в некоторых ситуациях может быть плохой идеей иметь функцию автоматической фиксации, могут быть некоторые причины, по которым вам может понадобиться эта опция в любом случае.

Я создал небольшой 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-доступ, опять же, его необходимо настроить в настройках.

Так что для ваших нужд вы можете захотеть изменить это поведение на частые обновления. Я никогда не играл с таймерами в затмении, но думаю, что это возможно.

...