13
© 2012 by IBM Corporation; made available under the EPL 1.0 automatic remote project synchronization using git Greg Watson IBM [email protected] John Eblen ORNL [email protected] Roland Schulz ORNL [email protected] Wednesday, April 4, 12

automatic remote project synchronization using git · automatic remote project synchronization using git Greg Watson IBM [email protected] John Eblen ORNL [email protected] Roland

  • Upload
    others

  • View
    39

  • Download
    0

Embed Size (px)

Citation preview

© 2012 by IBM Co rpo ra t i on ; made ava i l ab l e unde r t he EPL 1 .0

automat i c remote p ro jec tsynchron i za t i on us ing g i t

Greg WatsonIBM

[email protected]

John EblenORNL

[email protected]

Roland SchulzORNL

[email protected]

Wednesday, April 4, 12

Background

• High performance (and technical) computing typically requires remote access to compute systems

• Usually not possible to cross compile due to specialized library or environment conditions

• Remote access required for– Building

– Launching

– Debugging

2Wednesday, April 4, 12

Remote Projects (PTP 4.0)

3

Source code

Login

Compute

Launch/Monitor/Debug

Launch/MonitorDebug

Edit/Search/Index/Navigation

Build

Build

Launch

Executable

Wednesday, April 4, 12

Problems

• Network sensitive– Services may generate significant traffic

– Interactive operations can’t be delayed

• CDT is not designed for remote operation– Much code assumes direct file access

• Requires each CDT service (index, search, type hierarchy, etc) implemented on remote system

• Currently only works for C/C++, will probably never work for any other languages

• Team is not remote aware, and probably will never be

4Wednesday, April 4, 12

Synchronized Projects (PTP 5.0)

5

Source code

Login

Compute

Launch/MonitorDebug

Launch/MonitorDebug

Edit/Search/Index/Navigation

Build

Build

Launch

Executable

Source code

Synchronize

External RCSWednesday, April 4, 12

Features

• Provides remote synchronization and remote build support– Adds properties page to CDT build configuration

• Supports multiple target systems– Can synchronize active configuration or all configurations

• Synchronize on file save, and prior to build• Synchronize automatically, on demand, or disabled• Queues pending synchronize operations if off-line• Supports filtering based on files or patterns

6Wednesday, April 4, 12

Advantages

• Network insensitive– Data intensive services operate on local copy

– Off-line operation supported

• No changes required to CDT• Supports C/C++ and Fortran, other languages could

be added• Team operations supported on local copy, RCS can be

used on remote copy

7Wednesday, April 4, 12

API

• synchronizationParticipant extension point– Implements ISynchronizeParticipant

– Specifies UI for configuring synchronization

– Specifies ISyncServiceProvider

• ISyncServiceProvider– Specifies remote connection

– Specifies remote location (directory)

– Implements synchronize() method

• Current implementation for Git– Uses JGit on Eclipse side

• Initial work on rsync provider

8Wednesday, April 4, 12

Demo

9Wednesday, April 4, 12

Source Repository

Source Repository

Source RepositoryDevelopment Machine

Build Machine 2

Test Machine 2

Test Machine 1

Build Machine 1

A Real Life Example...

10

Development Eclipse

AFS

Runtime Eclipse

Local C/C++ Project

Local Java Plug-in

Projects

Sandbox tree

Installed binaries

CMVC

CVS

CMVC

Binaries

Local Synchronized Test Projects

Remote Synchronized Test Projects

ssh session

Build

Rsync

ssh session

Launch

Launch

Build

Analyze

Build

Synchronize

Synchronize

1. Project Synchronize

2. Project Build Started

3. Build artifacts copied to test machine

4. Launch runtime Eclipse

Backend code

Frontend code

5. Test project created

6. Test project synchronized

7. Launch tool tests

Wednesday, April 4, 12

Future Work

• New synchronized project wizard– CDT’s new project wizard is (a) not extensible enough and (b) too

complex for most situations

• Merge wizard– Conflicts occur if both local and remote source is modified

– Can happen if remote source shared, or checked out from RCS

– Looking at using Egit views

• Support for Java, Python, Perl, etc.

11Wednesday, April 4, 12

More information

• www.eclipse.org/ptp

12

Thank you!

Wednesday, April 4, 12

1. Sign in: www.eclipsecon.org

2. Select Session Evaluate

3. Vote

Feedback

13Wednesday, April 4, 12