From e4dbd11d44f13122719d598c5b091758dda42bc3 Mon Sep 17 00:00:00 2001 From: Thomas Adam Date: Mon, 13 Jul 2026 20:27:02 +0100 Subject: [PATCH] doc: rewrite SYNCING and reformat to markdown Rewrite the SYNCING document to reflect that everything runs on Github. Add examples on how to deal with merge conflicts. Also reformat to markdown so any examples are more obvious in different renderers. --- README.ja | 2 +- SYNCING | 173 ------------------------------------------------------ 2 files changed, 1 insertion(+), 174 deletions(-) delete mode 100644 SYNCING diff --git a/README.ja b/README.ja index aeb6704ae..3d3d0b43c 100644 --- a/README.ja +++ b/README.ja @@ -56,7 +56,7 @@ gitコミットについての連絡先 tmux-users@googlegroups.com -本ファイル、CHANGES、 FAQ、SYNCINGそしてTODOはISC licenseで保護されています。 +本ファイル、CHANGES、 FAQ、SYNCING.mdそしてTODOはISC licenseで保護されています。 その他のファイルのライセンスや著作権については、ファイルの上部に明記されています。 -- Nicholas Marriott diff --git a/SYNCING b/SYNCING deleted file mode 100644 index 51b780100..000000000 --- a/SYNCING +++ /dev/null @@ -1,173 +0,0 @@ -Preamble -======== - -Tmux portable relies on repositories "tmux" and "tmux-obsd". -Here's a description of them: - -* "tmux" is the portable version, the one which contains code for other - operating systems, and autotools, etc., which isn't found or needed in the - OpenBSD base system. - -* "tmux-obsd" is the version of tmux in OpenBSD base system which provides - the basis of the portable tmux version. - -Note: The "tmux-obsd" repository is actually handled by "git cvsimport" -running at 15 minute intervals, so a commit made to OpenBSD's tmux CVS -repository will take at least that long to appear in this git repository. -(It might take longer, depending on the CVS mirror used to import the -OpenBSD code). - -If you've never used git before, git tracks meta-data about the committer -and the author, as part of a commit, hence: - -% git config [--global] user.name "Your name" -% git config [--global] user.email "you@yourdomain.com" - -Note that, if you already have this in the global ~/.gitconfig option, then -this will be used. Setting this per-repository would involve not using the -"--global" flag above. If you wish to use the same credentials always, -pass the "--global" option, as shown. - -This is a one-off operation once the repository has been cloned, assuming -this information has ever been set before. - -Cloning repositories -==================== - -This involves having both tmux and tmux-obsd cloned, as in: - -% cd /some/where/useful -% git clone https://github.com/tmux/tmux.git -% git clone https://github.com/ThomasAdam/tmux-obsd.git - -Note that you do not need additional checkouts to manage the sync -- an -existing clone of either repositories will suffice. So if you already have -these checkouts existing, skip that. - -Adding in git-remotes -===================== - -Because the portable "tmux" git repository and the "tmux-obsd" -repository do not inherently share any history between each other, the -history has been faked between them. This "faking of history" is something -which has to be told to git for the purposes of comparing the "tmux" and -"tmux-obsd" repositories for syncing. To do this, we must reference the -clone of the "tmux-obsd" repository from the "tmux" repository, as -shown by the following command: - -% cd /path/to/tmux -% git remote add obsd-tmux file:///path/to/tmux-obsd - -So that now, the remote "obsd-tmux" can be used to reference branches and -commits from the "tmux-obsd" repository, but from the context of the -portable "tmux" repository, which makes sense because it's the "tmux" -repository which will have the updates applied to them. - -Fetching updates -================ - -To ensure the latest commits from "tmux-obsd" can be found from within -"tmux", we have to ensure the "master" branch from "tmux-obsd" is -up-to-date first, and then reference that update in "tmux", as in: - -% cd /path/to/tmux-obsd -% git checkout master -% git pull - -Then back in "tmux": - -% cd /path/to/tmux -% git fetch obsd-tmux - -Creating the necessary branches -=============================== - -Now that "tmux" can see commits and branches from "tmux-obsd" by way -of the remote name "obsd-tmux", we can now create the master branch from -"tmux-obsd" in the "tmux" repository: - -% git checkout -b obsd-master obsd-tmux/master - -Adding in the fake history points -================================= - -To tie both the "master" branch from "tmux" and the "obsd-master" -branch from "tmux-obsd" together, the fake history points added to the -"tmux" repository need to be added. To do this, we must add an -additional refspec line, as in: - -% cd /path/to/tmux -% git config --add remote.origin.fetch '+refs/replace/*:refs/replace/*' -% git fetch origin - -Performing the Sync -=================== - -Make sure the "master" branch is checked out: - -% git checkout master - -The following will show commits on OpenBSD not yet synched with "tmux": - -% git log master..obsd-master - -From there, merge the result in, fixing up any conflicts which might arise. - -% git merge obsd-master - -Then ensure things look correct by BUILDING the result of that sync: - -% make clean && ./autogen.sh && ./configure && make - -Compare the git merge result with what's on origin/master -- that is, check -which commits you're about to push: - -% git log origin/master..master - -And if happy: - -% git push origin master - -Keeping an eye on libutil in OpenBSD -==================================== - -A lot of the compat/ code in tmux comes from libutil, especially imsg. -Sometimes the API can change, etc., which might cause interesting problems -trying to run the portable version of tmux. It's worth checking -periodically for any changes to libutil in OpenBSD and syncing those files -to compat/ as and when appropriate. - -Release tmux for next version -============================= - -1. Update and commit README and CHANGES. The former should be checked for - anything outdated and updated with a list of things that might break - upgrades and the latter should mention all the major changes since - the last version. - -2. Make sure configure.ac has the new version number. - -3. Tag with: - - % git tag -a 2.X - - Where "2.X" is the next version. - - Push the tag out with: - - % git push --tags - -4. Build the tarball with 'make dist'. - -5. Check the tarball. If it's good, go here to select the tag just pushed: - - https://github.com/tmux/tmux/tags - - Click the "Add release notes", upload the tarball and add a link in the - description field to the CHANGES file. - -6. Clone the tmux.github.io repository, and change the RELEASE version in the - Makefile. Commit it, and run 'make' to replace %%RELEASE%%. Push the - result out. - -7. Change version back to master in configure.ac.