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 <path/to/file/changed>

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:

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 <SHAKey where you want to set you tree to> e.g.

 git reset --hard 43be160 

Now you should git push to make sure the stuff doesn't disappear again. :)