Working on Jim ============== Jim's sources are kept in Git Version Control System. Global repository of Jim project is placed on this Web site: http://repo.or.cz/w/jimtcl.git There are two ways of contributing to Jim project. First is suited for one-time fixes and small corrections. The second is more appropriate for long-term contributors interested in Jim internals. Small changes ============= For small modifications, procedure of preparing a traditional 'patch' is enough. In order to prepare a patch, you first have to obtain the most recent copy of Jim Tcl. This can be done with following command: git clone http://repo.or.cz/r/jimtcl.git After entering newly created directory you can easily correct/fix/modify files. Once finished, patch can be easily generated: git diff > my_patch_fixing_x_y.patch If working without Git system, you'll have to backup files first, modify the original files and obtain a patch manually: cp jim.c jim.c.ORIGINAL [...] <- modifications go here diff -u jim.c.ORIGINAL jim.c > my_patch_fixing_z.patch Bigger changes ============== In order to help extending and correcting Jim in a long term basis, one needs to create separate fork of Jim project and maintain his changes in a separate copy of a repository. By visiting this site, you'll have a chance to fork a project. This can be easily done with "fork" link. Form that will show up next refers to the project that is about to be started. The only thing that has to be taken care of is the project mode -- it should be "push mode". Once the project is created one must add a user that will actually start committing new files to the repo. It can also be done through the WWW interface, so nothing more is necessary. Once finished with setting up a project on the WWW panel, one can start playing with actual import of the files. In order to obtain copy of Jim sources, we have to clone the repository: git clone http://repo.or.cz/r/jimtcl.git Now, we must push fresh copy of Jim to your project URL: git push master So for example for me it was: git push ssh://repo.or.cz/srv/git/jimtcl/wkoszek.git master In order to add file we type "git add ". For remove, we do "git rm ". To remove all local changes that aren't in a repository you do "git reset --hard HEAD". Once inserted, files have to be committed with "git commit -a". Once done with commits for today, "git push" can be used to propagate changes from your local disk to the remote repository. Right now you can verify whether this works by trying to clone your project's repository somewhere else, this time using anonymous HTTP access: git clone http://repo.or.cz/r/jimtcl/wkoszek.git Review, testing and publishing ============================== Notification of work that can be considered finished is more than welcome on Jim-devel mailing list: http://jim.tcl.tk:8080/cgi-bin/mailman/listinfo/jim-devel Patches prepared with the procedures presented above are welcome. Before submitting patches, you can verify that your changes didn't bring any regressions to the Jim. In order to do so, sample regression tests have been implemented. You can execute them by typing: make test All tests should succeed.