rolandschulz / ptp Goto Github PK
View Code? Open in Web Editor NEWEclipse Parallel Tools Platform
Home Page: http://www.eclipse.org/ptp/
Eclipse Parallel Tools Platform
Home Page: http://www.eclipse.org/ptp/
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.
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.
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.
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.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=348939
Greg's patch solves this for most situations. He uses a maximum number of files to break up the add command, though, which of course may not work in all situations. We should modify this to be a little more precise, say by looking at the command size. Also, we need to consider if other commands could become too long.
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.
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:
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?
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.
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?
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.
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.
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.
For remote projects, the user is asked if they want to switch to the C/C++ perspective. Should we do the same?
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:
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.
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?
we should support full merge. We probably want to use Egit for the merging.
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.
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.
Changing the workspace configuration is either always or almost always wrong. Should we not allow users to change it?
Currently, errors are encountered during project removal and if Eclipse is shut down in the middle of a sync or other process.
The convert to sync project wizard currently doesn't work.
The builder isn't changed to the Remote Sync Make Builder. Maybe other things have to be fixed too.
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)
Allow the user to synchronize all configurations by use of a button. Also add option to sync current configuration, perhaps in a menu.
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?
The remote location tab has a few problems;
It shows up as a blank tab in other project types.
Exceptions are thrown if the tab is opened for newly created configurations.
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 the efficiency of sync, especially on large projects. Improve if needed. Some possible strategies are:
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
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.)
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.
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?
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:
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.)
On multi-configurations, the user can modify the page, but it seems these changes have no effect.
We should blank the page rather than just not allowing modifications, which makes the GUI seem broken.
Ideally, I suppose, we should allow changes to multi-configurations, although I don't know how much sense that makes for sync.
Is there a way to remove the multi-configuration options from the configuration combo when on the sync page?
I was able to cause some exceptions if I tried building multiple configurations in rapid succession.
For other distributed version control systems we should add their database directory to the ignore list. Those can be large and change often so it would be a problem to sync them.
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.
Steps to reproduce:
Git has a problem with empty directories:
https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F
For Indigo, I tried adding an empty file to new directories in the synchronization call. Unfortunately, Eclipse doesn't seem to fire a resource change event if an empty directory is created.
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.
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)
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.
Add ability to index and display include files for remote repositories
See comments for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=348939
This is non-trivial, because we need to refactor the code a little, separating out file matching and binary file filtering, and of course filtering binary files remotely is not easy.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.