Decent overview… still need to understand branching and tagging better.
http://lucumr.pocoo.org/2008/1/28/mercurial-for-subversion-users
http://hgbook.red-bean.com/read/ - A good guide
http://gitguru.com/2009/02/18/branching-strategies-overview/ - Good description of GIT branching (or branching in general); I’m more used to back mergeing then forward merging. This seems to just merge to the trunck where the trunk is at.
http://book.git-scm.com/3_basic_branching_and_merging.html - includes a video sample of GIT branching
- HOW TO MERGE BRANCH TO TRUNK USING CH7 Branch method
- How to show a status of conflict instead of modify/.orig?
- Need a sample of a conflicting change
- Need a sample of multiple revisions
- Need a sample of a remote repository that doesn't need an update
- How do I know when I'm in sync?
- hg stat && hg incoming && hg outgoing
- Chapter 3 may need more attention
- Chapter 5 httpd vs sshd; open the discussion on branch management; this doc suggests cloning the main repository to create branches.. then on the server, you can pull changes from the branch back to main
- I don't like this because if you do a fetch from the server branch, then it pulls the main development into the branch... too easy to make this mistake IMHO
- Chapter 6 is pattern matching when running commands
- Chapter 7 has a hook to prevent bleeding edge branch commits (?) useful?
- Why did I have to do a force on my push? Not sure what happened
- How do I do a log -v? Show all files affected in each revision
===
gripes
===
- the FILENAME.orig files stick around after a merge is resolved... and I've already included files I didn't want in the repo
===
similar as svn
===
- hg status (lot of options; hg help status)
- hg log (sort of)
- hg log -r REV (with a few more options for choosing the revision)
- hg diff FILENAME
- hg commit -m "MESSAGE" (alias ci; commits a local revision... see new concepts; can also omit the -m and it opens and editor)
- hg resolve -m (requires the -m to mark it as resolve, otherwise just merges again)
- hg revert
- hg add
- hg rm (alias of remove)
- hg cp (alias of copy)
- hg mv (alias of rename)
===
new concepts
===
- hg clone
- Sharing with a repository
- hg incoming (a test pull)
- hg outgoing (a test push)
- hg pull (add a -u to perform the update long with the pull)
- hg push
- Need to do an update after a push or pull; can do an hg tip -vp (verbose, patch) to see the changes before you update
- hg fetch (replaces the required sequence)
- hg pull -u
- hg merge
- hg commit -m 'Merged remote changes'
- hg commit is a bit different as it is only local; I think that push is the actual intention for an svn user
- hg rollback - undo for a accidental commit; only one level of undo and not after a push
- hg tip is similar to log, but only displays the newest revision in the repository
- hg parents is similar to tip, supposed to be used to show the latest revision... need to understand this better
- hg heads seems to be able to have more than one head... say on a pull before the update... but only one tip.. I think
- Merging conflicting changes after a pull/push followed by an update
- hg merge (creates the diff files for the conflicts-- very different from SVN merge)
- hg tags
- hg tag TAG-NAME
- hg branches
- hg branch BRANCH-NAME
===
setup
===
- create a ~/.hgrc file with the following as a minimum (email doesn't need to be valid-- used in the metadata of hg transactions)
[ui]
username = matt skinner <matt@localhost>
[extensions]
fetch =
- The fetch substitutes the common sequence hg pull -u; hg merge; hg commit
NOTE: instead, you can add the -u option to the commands to provide a user name
NOTE: alternative to .hgrc is set the HGUSER environment variable
===
create a repository
===
- hg init REPO-NAME
use "hg -v help init" to show global options
===
show a diff
===
- hg log -p (or --patch)
- trunk (branch)
- v0.x (branch)
- v0.1 (branch)
- v0.2 (branch)