How to use Eclipse Mercurial Plugin to produce a patch? - eclipse

I am new to Mercurial and the Eclipse Mercurial Plugin.
The thing is that I've made a change in a single file, and commit. I have two revisions of this file and I need to make a patch/diff file between the first and the second revision.
Any clues on how I can achieve this with Mercurial/Eclipse Mercurial Plugin?
King Regards,

I don't think you can through the Eclipse GUI. You can certainly export a patch for an uncommitted file or files (Team -> Export Patch).
You will have to use the command line (hg log -p) on the revision you want the patch for.

Related

Using Subversion in Spring Tool Suite: untrack file committed by accident

Does anyone know how I can untrack a couple of files committed by accident?
I'm looking for the equivalent of the Mercurial hg forget command.
I'd especially appreciate any answers that explain how to untrack files using the Spring Tool Suite IDE, i.e. not from command line.
It seems that it is not as easy as in Mercurial :) especially if the repo is shared with others and they also need to keep this file (after it is removed from tracking and ignored, the first svn update will delete it).
See this answer for detailed instructions: SVN: Ignoring an already committed file
I found a way to achieve this by fiddling around. Neither of these is ideal - can anyone improve on this?
Option 1: Delete in SVN repository, then resolve
Navigate to Window -> Open Perspective -> SVN Repository Exploring
to view the repository.
Right-click on the file and press Delete...
Navigate back to Spring perspective
Right-click on the file and press Team -> Show Tree Conflicts
In SVN Tree Conflicts perspective, right-click and press Resolve... to explicitly accept the repository deletion
In Spring perspective, right-click on the file and press Team -> Add to svn:ignore
Option 2: Delete locally, then resolve
Move file somewhere else on local
Commit to repository
Copy file back into tracked project
Add to svn:ignore
Run svn delete <path> --keep-local in your working and then svn commit the change.
The first command will schedule the delete of the file in repository, however it won't touch it in your working copy making the file unversioned. You can add the file to ignores afterwards.
svn delete
--keep-local

How to remove a class that is no longer used when using SVN?

I am working on a Java project in Eclipse and I use SVN to commit various versions of it in the repository. However I have noticed, that when I delete a class and I then commit the project, the old class is still included in the latest committed version of the project. Is there any way to prevent the SVN from maintaining classes which have been actually deleted?
Update: The same problem comes out when I rename a class and then I try to commit the new version of the project. It keeps both classes and stores both on the repository version. How can I prevent it from storing the old ones? I appreciate deeply any help bacause I would not like in any case to store it spoiled with the old classes.
If you use an Subversion for Eclipse like SubClipse then deleting a file in Eclipse will automatically schedule the file for deletion on next commit.
If you use a Subversion client outside of Eclipse you will have to delete the file using that client and then refresh the project in Eclipse after the file is gone from your working copy.
You need to also delete the class in svn as well, something like:
$ svn rm path/to/class.java
You can also remove the file using Eclipse, assuming that you have the svn plugin installed. Make sure that you select the file when you are committing your changeset, otherwise the deletion won't be sent to the server.
Update: Answering the update to the question
$ svn mv path/to/OldClass.java path/to/NewClass.java
Or, as Martin mentioned, ensure that your have your subversion plugin in eclipse properly configured, then it will also do the svn rm and svn mv commands for you.
SVN needs to know about any changes for all files and folders that are controlled by SVN (i.e. that are put under version control). It is easy to detect file changes, but it is not easy to detect rename and delete operations. If you just delete a file (using your operating system tools), SVN will warn you about a missing file.
For these operations you must use the corresponding SVN commands. SVN is best learned, when doing it manually with all those SVN commands (at first).
Using a SVN client makes it a little easier for you. For example, if you use TortoiseSVN, you can right-click a file and choose "SVN delete" for doing both, deleting the file and communicate it to SVN. Same for renaming.
The same is done by using a SVN plugin in Eclipse (Subclipse or Subversive, for example). If you then use Eclipse for deleting or renaming a file, the plugin will also do the operation and communicate it to SVN.
Keep something in mind: When deleting or renaming files (and/or folders) - using SVN commands, of course - you should always do a SVN update prior to SVN commit. Otherwise you might get an error about a revision problem.

How do I SVN copy files or projects in Subclipse?

I am working with Java projects in Eclipse (Juno), using Subclipse for version control.
I've noticed that when I copy a file or a project, the resulting copy will not be under version control.
I can add the files to version control as a second step, but that will break their Subversion history.
Usually, I want to preserve the history: I want a way to copy files and projects in Eclipse that will issue a svn copy command.
How can I achieve this?
Update: I tried it on a project again; it seems that a svn cp was issued.
In which case my question becomes: how can I disable that?
Whenever I want to make a copy of code I use the branch feature, this would keep the history intact. It is available under (Right-Click on resource) -> Team -> Branch/Tag.

Delete some files from the commit with Mercurial and Eclipse

I am using Mercurial with Eclipse. I made a commit and I commited some files which shuld not been commited.
Do you know if there is a possiblity to delete those files from the commit.
Thank you.
rollback (if it's the most recent commit) or strip (if it's older) would do it for you. This post has more details on these commands. To do it with MercurialEclipse, right click on your project in Eclipse and do Team-->Undo-->Rollback or Team-->Undo-->Strip.
If those aren't options, you could just remove the files in question and then commit that as a separate changeset. That would, of course, preserve the fact that those files were once under Mercurial control. If that is not desirable, this page lists some more options. If you go the MQ route, the workflow listed there can be done in MercurialEclipse via the "Mercurial Patch Queue" view.

How do you commit ONLY files you've "added" to version control in subclipse?

I just spent a fair amount of time selecting the files and directories I wanted under version control. I'm running subclipse under eclipse. I right clicked, Team, Add to Version Control. Now I want ONLY those files committed without right clicking the whole directory which contains a huge number of media files that I don't want handled by version control. If I go Team/Commit under that directory it hangs for a very long time... I thought by "Add to Version Control" there was an option to commit those files only. I just don't know how to do it.
I hope I explained the question properly..
UPDATE:
Since people are talking more about ways to ignore files rather than committing what you're marked as "Add"ed to Version Control, let me put this a different way. What does "Add to version control" do exactly? It seems to be a feature without use.
Subclipse includes both unversioned files and files you specifically marked for addition when you open the commit dialog. It does not perfectly mirror the behavior of the command-line client. You have two options: uncheck each file you do not want to commit in the Subclipse commit dialog or use the command-line svn tool to commit. The command-line tool will only commit files you have marked for addition and will ignore the other files. Here's a simple example:
$ touch file
$ svn status
? file
$ svn add file
A file
$ svn status
A file
$ touch file2
$ svn status
? file2
A file
$ svn commit -m "Added empty file"
Adding file
Transmitting file data .
Committed revision 2.
? denotes a file that it unknown to svn and will not be put under version control automatically by svn commit. A denotes a new file that is scheduled for addition. Subclipse is trying to mirror this behavior by allowing you to "add a file to version control", which is the equivalent of the command-line svn add. but also includes unversioned files not scheduled for addition in its commit dialog (which I personally find somewhat annoying). If you run svn status on the command-line, those files which you "added to version control" in Subclipse will be marked with an A while those you did not will be marked with a ?. You won't have to run any svn add commands since you did that already in Subclipse.
You can add a pattern in Preferences/Team/Ignored resources (it's not the same as svn:ignore). You can also delete it, if it is no longer helpful.
use svn:ignore for the resources you don't need under version control (Team > Add to svn:ignore)