Giter VIP home page Giter VIP logo

ptp's People

Contributors

catherine2019 avatar clementchu avatar crecoskie avatar eblen avatar jarrah42 avatar ndebard avatar robbie-juelich avatar rolandschulz avatar vivkong avatar wfrings avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ptp's Issues

RunAs Remote Application

The RunAs Menu (opened by the Run/Debug button) should have a way to create a Remote Run-Configuration. We should always set up a "Generic Remote Launch" in the wizard, so that the required RM is their.

Consider Additional Sync Points

Currently, sync'ing occurs for resource changes and before and after building. Are there other times when we should sync? We should be able to sync liberally and let the synchronize function worry about efficiency.

add files inside user .gitignore file

if the user has a .gitignore file and has some files in their and we than create a remote project with this project as the remote directory we get the error:
The following paths are ignored by one of your .gitignore files:
{the file name}
Use -f if you really want to add them.
fatal: no files added

Maybe it is as easy as adding the -f switch.

Menu for File Filtering

We need a menu so that users can select/deselect files to be included in sync'ing. At first, this can be a simple list of files. Later, we can add features such as filtering by patterns and importing settings from cvs and elsewhere.

Better Progress Monitoring

The progress monitor for sync'ing is never updated. Also, progress monitoring for other operations, such as git operations or build operations, may also need to be improved.

Multiple Configuration Problems

There are multiple problems with the GUI configuration, mainly due to the difficulty of adapting the CDT extensions to work correctly with sync projects. Since these problems and their solutions are likely to be closely related, they are all placed in a single issue. Below are two problems. Others will follow:

  1. Initial toolchain selection is ambiguous. Is it for local or remote? For now, it is for both, and the user may have to remember to change one of them later. A toolchain combo on the sync wizard page would help but doesn't eliminate the ambiguity. Is there a better way to present these options to the user?

  2. The sync builder must be used in order for the system to work correctly. Although it is set as the default, users can change it. Even worse, if the user selects an alternate toolchain, the builder is changed to something else. So users must remember to change it back. This problem also limits the types of builders that can be used.

Organize Project Types

When creating a new sync project, consider the different project types. What should be added or removed? For example, "Remote Makefile Project" should probably be removed. Should they be organized differently? Do they all work?

Make sure we don't affect non sync project: Configuration tab

I get:
java.lang.RuntimeException: Project configurations not yet initialized
at org.eclipse.ptp.rdt.sync.core.BuildConfigurationManager.getBuildScenarioForBuildConfiguration(BuildConfigurationManager.java:152)
at org.eclipse.ptp.rdt.sync.ui.properties.BuildRemotePropertiesTab.setValues(BuildRemotePropertiesTab.java:321)

for a non-sync project. We have to make sure that the property tab is only shown for sync projects.

Add Dialogs and Logging

Need dialogs for certain situations, such as merge conflicts or problems connecting to remote hosts. Other situations are not serious enough for dialogs but should be logged.

Handle Obscure File Names and ChannelExec Errors

For Indigo, we added a fix to handle files with spaces in their names. Files with parentheses or other odd characters still do not work correctly, though. A ChannelExec error usually occurs when the remote "git add" command is attempted. As an interesting test case, the Python 3.2 source fails even after removing the one file with parentheses:

Python_3.2/Misc/TextMate/Python-Dev.tmbundle/Snippets/2 to 3 - Module Deletion (docs).tmSnippet

I was unable to find another file with an odd character, so I don't know the cause of the problem or even if it is a file name issue.

Change to C/C++ Perspective

For remote projects, the user is asked if they want to switch to the C/C++ perspective. Should we do the same?

Improve coexistence with GIT as version control

We should make sure that it is possible to use GIT as version control (both with and without EGIT) while using synchronization.

The best strategy to use both together should be developed. Some ideas:

  • Synchronization and version control should be in different branches

  • Synchronization should never commit when the active branch is not the synchronization branch

  • The synchronization UI should provide a command to stop/resume synchronization

  • while synchronization is stopped it should automatically switch back to the last active branch with all changes untrack/not-updated

  • switching to the non-sync branch could be done by: git commit -a; git checkout non-sync; git merge --squash sync; git reset HEAD

    does this always always work?
    some easier approach?
    should we pull from remote before the checkout?

  • switching to the sync branch: the sync branch should start at the last commit in the non-sync branch. Easiest would be:
    delete old sync branch and create new one based on non-sync branch (git branch -D sync; git branch sync). This would also guarantee that the sync history doesn't grow to large.

The best (or list of possible) strategy(s) should be documented: how to best use both together and if possible the UI should help.
With the above suggestion this would mean that the user should never do any git commands by himself while synchronization is on. Thus the workflow would be:

  • turn sync on
  • make changes
  • turn sync off
  • make real commit in non-sync branch
  • repeat starting from top

Sync context menu missing for certain selections

The sync context menu is often not available, even though the current selection is within a sync project. It never shows up in the "Fortran Projects" view and often does not show up for source files or folders.

Consider State Versus Variable Changes

For the sync and build providers, and perhaps other cases, data is stored both as state and inside a variable. Sometimes the setter methods only update the former, causing changes not to be propagated right away. Where does this occur? What effect does it have?

Merge

we should support full merge. We probably want to use Egit for the merging.

Delete a Character Bug on Mac

On Macintosh Snow Leopard, when creating a new synchronization project, the last character of the root location is removed after the user pushes OK. This bug occasionally does not occur and never seems to occur on linux.

Select configuration doesn't show workspace configuration

The workspace/local build configuration is only created at the end of the wizard in org.eclipse.ptp.rdt.sync.ui.wizards.NewRemoteSyncProjectWizard.performFinish(). Because of that it is not shown in "Select configuration" page. This should be fixed. Thus the configuration should be created at the beginning of the wizard not at the end.

Make sure binaries are not automatically added

Remote: New files after Project creation are not added. Later we will add a way that the user can add files (e.g. RemoteProjectExplorer)
Local: We need to see whether we can distinguish added files by user versus by build (in the ResourceChangeListener)

Add sync context menu

Allow the user to synchronize all configurations by use of a button. Also add option to sync current configuration, perhaps in a menu.

Handle User Selecting Bad Connections

If the user selects a connection but does not have a password, allow them to cancel and stop Eclipse from pestering them for a password.

Is this a synchronization problem only or does it apply to other project types too?

Problems with Remote Location Tab

The remote location tab has a few problems;

  1. It shows up as a blank tab in other project types.

  2. Exceptions are thrown if the tab is opened for newly created configurations.

  3. It does not update or retain information like the other tabs. The data in the form should be restored if the user switches tabs or configurations and then returns.

Test and Improve Sync Efficiency

Test the efficiency of sync, especially on large projects. Improve if needed. Some possible strategies are:

  1. Caching and combining commits
  2. Not sync'ing both directions every time.
  3. Not sync'ing all files (related to not sync'ing binaries)
  4. Allowing user to adjust frequency of sync'ing
  5. Using Git more efficiently, such as avoiding walking the file tree

Make error message easy to understand for the user

An example of a suboptimal error message (this is caused by a merge conflict when user/email is not setup):
Synchronization error for projecttest

Remote merge failed with message:
*** Please tell me who you are.

Run

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident [email protected] not allowed

Problems Running Remotely

There seems to be some issues with running remote processes, especially for long-running tasks. Often the connection may go down, output is not piped to the console, or processes never finish and cannot be canceled. The latter blocks other processes, and Eclipse has to be restarted. (This sounds vague, so I may add some specific examples later.)

Make Remote Execution Robust

Currently, executing of remote commands is done inside the class rdt.sync.git.core.CommandRunner. This command runner is not robust and can cause deadlock if buffers should overflow.

Consider Possible Duplicate Build Configuration Ids

It is possible, although unlikely, for configuration ids to not be unique. (They are generated using a random number generator.) We need to consider what would happen if ids were duplicated. Would it affect more than just this project? How likely is it? What would happen? Should we create better ids for the BuildConfigurationManager to use?

Properly Handle Multi-configuration on Properties Page

In the code, we disable the synchronize property page for multi-configurations. If the user selects "all configurations," this works correctly by not allowing modifications. However:

  1. If the user selects multi-configurations, no dialog pops up for selecting configurations as on the other pages
    (Note that you must have three or more configurations before the multi-config option appears.)

  2. On multi-configurations, the user can modify the page, but it seems these changes have no effect.

  3. We should blank the page rather than just not allowing modifications, which makes the GUI seem broken.

  4. Ideally, I suppose, we should allow changes to multi-configurations, although I don't know how much sense that makes for sync.

  5. Is there a way to remove the multi-configuration options from the configuration combo when on the sync page?

Try to make sync projects work with managed projects

Currently we don't call the function from our builder to create the makefile and in your GUI I get the following exception:

java.lang.StringIndexOutOfBoundsException: String index out of range: 44
at java.lang.String.substring(String.java:1067)
at org.eclipse.ptp.rdt.sync.ui.properties.BuildRemotePropertiesTab.setValues(BuildRemotePropertiesTab.java:349)
at org.eclipse.ptp.rdt.sync.ui.properties.BuildRemotePropertiesTab.createControls(BuildRemotePropertiesTab.java:182)

May be we can subclass our builder from CommonBuilder and use its performPrebuildGeneration to generate the make files.

Error in advanced settings during wizard

Steps to reproduce:

  • Create new synchronized Project (Hello World Makefile Project, any toolchain)
  • 2x Next (now "Select Configurations" page")
  • Advanced settings
  • go to C/C++ Build->Synchronize
  • you get "The currently displaced page contains invalid values"

Reconsider "Build Subdirectory" Textbox

The "Build Subdirectory" textbox inside the BuildRemotePropertiesTab duplicates one already in the "Builder Settings" tab. It is there for convenience, but how often do users specify a directory for building (running make)? Also, it won't work properly for managed projects, since CDT sets the build directory.

Check that git is installed, test it, and allow user to modify location

Currently if git is not found the user doesn't get any error shown in the GUI
Only on the console it says:
org.eclipse.ptp.rdt.sync.git.core.RemoteExecutionException: remote git init failed with message: sh: git: command not found
at org.eclipse.ptp.rdt.sync.git.core.GitRemoteSyncConnection.doRemoteInit(GitRemoteSyncConnection.java:228)

Support Other Providers

Currently, support for sync providers other than git and remote providers other than Remote Tools is spotty or even broken. In some places, the id of the sync provider may be hardwired or inconsistent. (Sometimes "Git", sometimes "Git Synchronization Provider".) This works at the moment because it is assumed to be either a git provider or no provider.

Remote includes

Add ability to index and display include files for remote repositories

User Documentation

We need user documentation of how a user is supposed to use a sync project. We also need to contribute to the New&Newsworthy. Both should contain screenshots to visualize it.

add all files also if .ptp-sync exists

currently if a .ptp-sync folder already exists we don't add any files. This made sense when we were still using .git to be safe. But now this might not be the best approach anymore. E.g. if the user deletes his local project and recreates it than the .ptp-sync still exists from the last (deleted) project. Than none of the files are added.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.