Using hg revert in Mercurial

Mercurial

Mercurial Problem Overview


I'm using Mercurial. I made a clone of a repository. For debugging, I changed a few lines of code in a java file. I did not commit those changes though. I just want to revert them back to their original state, as found in the repository. I tried hg revert filename.java, which did revert it, but now when I do hg status, I see additional files added in my folder now like:

? filename.java.orig

Can I just delete those files, and why does Mercurial make them when I use revert?

Mercurial Solutions


Solution 1 - Mercurial

You can also use the flag --no-backup and the .orig files will not be created

hg revert --no-backup filename.java

As of Mercurial 2.0, you can instead use the flag -C to supress the .orig files from being created

hg revert -C filename.java

Solution 2 - Mercurial

Yes, you can delete them. It's a safety feature in case you reverted something you didn't mean to revert.

Solution 3 - Mercurial

I find the purge extension handy. Usage:

hg purge

> "This extension purges all files and directories not being tracked by > Mercurial"

...including the .orig files but excluding ignored files (unless you use --all).

Solution 4 - Mercurial

As other's have pointed out, you can safely delete these files.

You can remove them by executing this command from the root of your repo:

rm `hg st -un | grep orig`

If you want to revert, and don't care at all about backing up the original files, the command you want is:

hg update -C

Solution 5 - Mercurial

Those are copies of the files from before you reverted them. If you don't need those, you can delete them, either by hand or by using the Purge extension:

hg clean

Solution 6 - Mercurial

These backup files can be created for merge and revert operations (cf. man page). You can add an ignore rule if you want, or simply delete them if you don't need them anymore.

Solution 7 - Mercurial

These are rather common, resulting from various operations. A glance at one of the moderate sized repositories I work on finds 237 of them. I don't like deleting things that may end up being useful, and I have no reason to name legitimate files with the same suffix, so I add the following to .hgignore instead:

.\.orig$

Solution 8 - Mercurial

I made this batch file myself.

IF "%1%" == "d" (
    del /s *.orig
	del /s *.rej
 ) ELSE ( 
    del /s /p *.rej
	del /s /p *.orig
 )

Help: Save this content as orig.bat

  1. Run orig d to delete all rejects and orig files at once without confirmation

  2. Run orig to delete files with confirmation [Safety mechanism]

Hope this is helpful.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser246114View Question on Stackoverflow
Solution 1 - MercurialFoomanView Answer on Stackoverflow
Solution 2 - MercurialHank GayView Answer on Stackoverflow
Solution 3 - MercurialJonah BraunView Answer on Stackoverflow
Solution 4 - MercurialTed NaleidView Answer on Stackoverflow
Solution 5 - MercurialPeter WestlakeView Answer on Stackoverflow
Solution 6 - MercurialAndiDogView Answer on Stackoverflow
Solution 7 - MercurialDerek SlagerView Answer on Stackoverflow
Solution 8 - MercurialMahendranView Answer on Stackoverflow