In March of 2011, CobraMUSH switched from using darcs to using git for revision control. To keep current with CobraMUSH, you can use git instead of waiting for patches to be released. To check out the CobraMUSH sources, use: git clone http://git.theari.com/git/cobramush.git CobraMUSH developers can use this, instead: git clone cobramush@cobramush.org:cobramush.git Once you have a local copy of the repository from one of the above commands, you should run the script utils/preparedist.sh - this will create the Configure script and take care of setting things up for you to be able to build CobraMUSH. If you make a change to the source and want to commit it, use git add You can also use git add -i to interactively stage or unstage changes to be committed. When you are ready to commit your changes, use git commit This will only commit the change to the current branch in your copy of the repository. Pushing your commits to the server is a separate process. Pushing and Pulling commits is just like darcs that regard. Sub-commands are push and pull. git push git pull Further help for users familiar with darcs coming to git, is this git for darcs users guide: http://www.megacz.com/thoughts/git.for.darcs.users.html ====== I lost my commits! Oh no, what do I do? ====== Several great articles explain this: * http://www.humbug.in/docs/pro-git-book-es/maintenance-and-data-recovery.html * http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html * http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html * http://stackoverflow.com/questions/2467433/git-checkout-sha-and-heroku * http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html .. Now that you have several official links on how to do it, I'll explain in my own words. Simply there are 2 main tools. git fsck --lost-found This command will give you the dangling commits that exist out there for your repo. [nveid@bender[ttypts/6]~/gitwork/cobramush]$ git fsck --lost-found dangling tree 2b00908fbd176a0d3a3af79daba01f46207ff7bf dangling tree 1d81b6bd266ede11548cda2cc0dd4edc1ae972b2 dangling tree f3c8a1278c2ed1d13b3b618dba952d2d9ee667b4 dangling tree ab4d55a568d86ce49e4a61c0757af7ef61838991 dangling tree 8010b6838611ec806c405dd3b98cd77beac36250 dangling tree aa1471117c28787c93873163560125c1b9f19719 dangling tree da56ee09d279970780cba87ca090f53eb99e3a7e dangling blob 411a1e587572229f0547a855e600e39eefcaa60a dangling tree 8f5a9a78214d43fb59ff25045e4c401400fc2ed2 dangling tree 4365296e79bba442906837d2618dd2c8a8b9d5c9 dangling blob f46598ea97084dd640bf352cf539352dd7989c8d dangling tree aab1e8539ff84c72e6e00ca2d0884f90e5c05e7b dangling commit 393279c3e95bb1af8e1835783e4e06e52bdbc7fc dangling tree 7438febced590689f1e9d0b0175528c18bb7bf72 dangling tree ccf85defea237e05f5beefd500938a0e1327ba99 dangling tree d1395f5e59394f0398b2c1ab3e755d4c4519ea05 dangling tree 237aff88943a9b4cf6f0fca6d7e452bab99267b9 Another great command to view them, and I think much more intuitive about what your files are.. git reflog 43be160... HEAD@{25}: commit: connect.txt generation with preparedist.sh now.. This will e11a217... HEAD@{26}: commit: CobraMUSH Adaptation to new PennMUSH Attribute tree code. 00a333c... HEAD@{27}: commit: Initial CobraMUSH Adaptation to new PennMUSH attribute code. e3aa42d... HEAD@{28}: commit: PennMUSH Incorp 182p4 99070dc... HEAD@{29}: commit: PennMUSH Incorp 182p4 f69c37f... HEAD@{30}: commit: PennMUSH Incorporation 182p4 So lets say for example, you got to the connect.txt, you switched your repo to master or some other god forsaken thing. You then switch back to the repository that you originalyl done these commits, but oh no... You didn't push! Ok, they're not in your git log anymore, but there is something you can do. :) Simply type the following git reset --hard e.g. git reset --hard 43be160 Now you should git push to make sure the stuff doesn't disappear again. :)