A Scalable, User-Friendly Source Control System.
Go to file
Laurent Charignon 2af271bf20 cleanup: remove dbg extension
Summary: It exists in core as contrib/debugshell.py

Test Plan: N/A

Reviewers: pyd, durham, rmcelroy, cdelahousse

Differential Revision: https://phabricator.fb.com/D2784306
2015-12-22 20:16:30 -08:00
copytrace copytrace: deal with merge case if common ancestor is the second parent side 2015-12-09 15:22:51 -08:00
crecord crecord: update to latest default 2015-03-06 12:59:11 -08:00
scripts fixing hg-new-workdir script problem 2015-11-30 22:07:59 +00:00
tests [manifestdiskcache] unbreak test by enabling manifest disk cache 2015-12-18 23:12:12 -08:00
.hgignore dbutil.py: remote database is SQL 2015-11-20 09:38:21 -08:00
automv.py automv: fixed file lookup 2015-11-06 15:16:11 -08:00
backups.py backups: make hg backups evolve aware 2015-05-20 12:29:09 -07:00
catnotate.py catnotate: add whole extension 2015-10-16 02:45:27 -07:00
chistedit.py chistedit: language improvements 2014-11-07 09:34:29 -08:00
commitextras.py extras: add commitextras extension 2015-04-27 20:20:48 -07:00
COPYING Initial commit with extensions and readme 2014-06-02 12:54:54 -07:00
dirsync.py dirsync: fix extramatches function 2015-12-11 14:46:29 -08:00
errorredirect.py errorredirect: simplify environment variables 2015-12-17 20:28:31 +00:00
extorder.py extdeps extension 2015-12-11 17:57:58 -08:00
fbamend.py fbamend: fix transaction issue with inhibit 2015-12-18 14:22:10 -08:00
fbconduit.py fbconduit: de-phabricator-ize hg and git hashes 2015-11-17 15:22:08 -08:00
fbhistedit.py Add interactive rebase 2015-12-02 12:10:59 -08:00
githelp.py Remove --name from githelp for git stash drop 2015-12-16 10:19:40 -08:00
gitlikebookmarks.py gitlikebookmark: add a -x option for git like bookmarks for rebase and histedit 2015-11-25 10:09:45 -08:00
gitlookup.py gitlookup: change back to b2x 2015-04-22 14:49:20 -07:00
gitrevset.py gitrevset: fix broken test caused by core's commit 48d6be2f1632 2015-05-07 17:46:30 -07:00
hg pullcreatemarkers: add a new extension to create markers on pull 2015-12-10 10:31:47 -08:00
inhibitwarn.py inhibitwarn: improve the warning message 2015-08-05 10:42:58 -07:00
Makefile Initial commit: fbamend, smartlog 2013-06-20 12:16:36 -07:00
manifestdiskcache.py [manifestdiskcache] respect the config variable 2015-12-10 23:27:20 -08:00
mergedriver.py mergedriver: add an option to resolve to skip merge driver 2015-12-02 22:58:57 -08:00
morestatus.py morestatus: fix deprecation warning 2015-12-18 18:05:35 -08:00
perftweaks.py perftweaks: change revlog delta heuristic 2015-11-24 15:18:39 -08:00
phabdiff.py phabdiff: improve the {tasks} template 2015-12-16 15:53:53 -08:00
phabstatus.py documentation: added phabdiff and phabstatus template names 2015-12-08 11:28:38 -08:00
phrevset.py phrevset: fix because of changes in core 2015-05-12 11:14:44 -07:00
pullcreatemarkers.py pullcreatemarkers: add a new extension to create markers on pull 2015-12-10 10:31:47 -08:00
pushrebase.py pushrebase: fix pushing merge commits with date rewriting on 2015-12-16 09:47:23 -08:00
pushvars.py Fix pushvars with remotenames 2015-07-17 15:47:30 -07:00
rage.py rage: add --preview option 2015-12-02 18:44:42 -08:00
README.md Merge fbonly into default 2015-03-08 12:22:25 -07:00
reflog.py Adding --commits to reflog 2015-11-17 19:03:28 -08:00
reset.py reset: use bookmarks.recordchange instead of bookmarks.write 2015-12-14 11:31:53 -08:00
setup.py copytrace: adding the module to 'setup.py' 2015-11-20 15:43:29 -08:00
simplecache.py simplecache: move memcache prefix to mcget/set 2015-06-15 17:19:08 -07:00
smartlog.py smartlog: remove expensive use of list.index 2015-12-22 18:39:39 -08:00
sparse.py sparse: don't stat .hg/sparse for every sparsematch call 2015-12-16 18:52:14 -08:00
statprof.py add the ability to specify a destination for the statprof data 2015-12-02 21:54:56 -08:00
tweakdefaults.py #9421810: disable histgrep if ran on the whole repo 2015-12-18 05:59:43 -08:00
upgradegeneraldelta.py upgradegeneraldelta: only upgrade before pulls 2014-12-18 12:43:32 -08:00
writecg2.py writecg2: disable cg2 bundle writing, and force bundle v1 2015-10-28 12:41:36 -07:00

hg-experimental

This is a collection of proof-of-concept Mercurial extensions written at Facebook. While they are all in basic use, they are considered experimental, are unsupported, and may or may not receive updates in the future. We're making them open source as examples of some better workflows we've been experimenting with.

Note that there will be extensions included here that only work with Facebook's infrastructure; they are included to give you an idea of how we integrate mercurial with our workflows.

smartlog

An extension that adds the 'hg smartlog' command. It prints graph log output containing only the commits relevant to yourself. Shows your bookmarks, the @ or master bookmark, and any draft commits without bookmarks that you've made within the past 2 weeks. Any commits in the graph that are skipped are represented by '...'.

We recommend also having an 'hg sl' alias that gives more concise output:

alias.sl=smartlog --template "{shortest(node)}  {author|user}  {bookmarks % '{ifeq(bookmark, current, label(\"yellow\", \" {bookmark}*\"), label(\"green\", \" {bookmark}\"))}'} {ifeq(branch, 'default', '', label(\"bold\", branch))}\n{desc|firstline}\n\n"

githelp

An extension that adds the 'hg githelp' command. It translates Git commands into Mercurial commands. Example:

$ hg githelp -- git rebase origin/master
  hg rebase -d master

$ hg githelp -- reset --hard HEAD^
  hg strip -r .

So it acts as a useful cheat sheet tool for people moving from Git to Mercurial.

backups

An extension that adds the 'hg backups' command. 'hg backups' prints a list of recently deleted commits (by reading your .hg/strip-backups directory) and allows you to recover a commit by doing 'hg backups --recover '. It prints the missing commits in reverse chronological order, and acts as a pseudo-replacement for Git's reflog.

fbamend

An extension that adds the 'hg amend --rebase' command. When working with a stack of commits, it's currently impossible to amend a commit in the middle of the stack. This extension enables that ability, adds a 'hg amend' command that invokes 'hg commit --amend', and adds a --rebase flag to 'hg amend --rebase' that rebase all the children of the commit onto the newly amended version.

If 'hg amend' is run on a commit in the middle of a stack without using --rebase, the amend succeeds and the old version of the commit is left behind with a marker bookmark on it 'bookmarkname(preamend)'. The user can then run 'hg amend --fixup' to post-humously rebase the children onto the new version of the commit.

chistedit

An interactive ncurses interface to histedit.

NOTE: This requires python-curses installed and Mercurial's histedit extension enabled.

This extensions allows you to interactively move around changesets or change the action to perform while keeping track of possible conflicts.

upgradegeneraldelta

Upgrades manifests to generaldelta in-place, without needing to reclone.

Contributing

Patches are welcome as pull requests, though they will be collapsed and rebased to maintain a linear history.

We (Facebook) have to ask for a "Contributor License Agreement" from someone who sends in a patch or code that we want to include in the codebase. This is a legal requirement; a similar situation applies to Apache and other ASF projects.

If we ask you to fill out a CLA we'll direct you to our online CLA page where you can complete it easily. We use the same form as the Apache CLA so that friction is minimal.

License

These extensions are made available under the terms of the GNU General Public License version 2, or any later version. See the COPYING file that accompanies this distribution for the full text of the license.