SF.net SVN: docutils:[9856 ] trunk/sandbox/aa-turner/g it_conversion
aa-turner--- via Docutils-checkins <[email protected]>
| Newsgroups | gmane.text.docutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
Revision: 9856
http://sourceforge.net/p/docutils/code/9856
Author: aa-turner
Date: 2024-08-07 01:41:55 +0000 (Wed, 07 Aug 2024)
Log Message:
-----------
Major improvement to the reposurgeon conversion procedure
- Update to reposurgeon 4.38
- Incorporate more history (pre-CVS release archives)
- Preserve SVN branches and convert to git merges
- Add attribution for contributed patches
Modified Paths:
--------------
trunk/sandbox/aa-turner/git_conversion/Makefile
trunk/sandbox/aa-turner/git_conversion/common_clean.lift
trunk/sandbox/aa-turner/git_conversion/common_combine.sh
trunk/sandbox/aa-turner/git_conversion/common_load.lift
trunk/sandbox/aa-turner/git_conversion/docutils.lift
trunk/sandbox/aa-turner/git_conversion/docutils.map
trunk/sandbox/aa-turner/git_conversion/post-convert.sh
trunk/sandbox/aa-turner/git_conversion/prest.lift
trunk/sandbox/aa-turner/git_conversion/sandbox.lift
trunk/sandbox/aa-turner/git_conversion/web.lift
Added Paths:
-----------
trunk/sandbox/aa-turner/git_conversion/Justfile
trunk/sandbox/aa-turner/git_conversion/common_cvs_docstring.lift
trunk/sandbox/aa-turner/git_conversion/common_cvs_structuredtext.lift
Added: trunk/sandbox/aa-turner/git_conversion/Justfile
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/Justfile (rev 0)
+++ trunk/sandbox/aa-turner/git_conversion/Justfile 2024-08-07 01:41:55 UTC (rev 9856)
@@ -0,0 +1,260 @@
+# Justfile for docutils conversion using reposurgeon
+#
+# Steps to using this:
+# 0. Install just version 1.27 or later.
+# See https://github.com/casey/just#installation::
+#
+# $ curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/bin
+# $ export PATH="$HOME/bin:$PATH"
+# $ $ just --version
+# just 1.34.0
+#
+# 1. Install reposurgeon 4.38 with ``just reposurgeon-install``
+# 2. Make sure reposurgeon and repotool are on your $PATH.
+# 3. Run 'just' to build a converted repository.
+
+set windows-shell := ["pwsh", "-NoLogo", "-NoProfileLoadTime", "-Command"]
+reposurgeon-version := "4.38"
+# https://github.com/casey/just/issues/11#issuecomment-1546877905
+reposurgeon_dir := replace("reposurgeon-VERSION", "VERSION", reposurgeon-version)
+
+# Convert Docutils to git (main entry point)
+[group('convert')]
+convert: docutils-git prest-git sandbox-git web-git
+ echo "Conversion finished. Cheerio!"
+
+# Get and install reposurgeon
+# ===========================
+
+# Install reposurgeon's dependencies using apt-get
+[group('reposurgeon')]
+reposurgeon-dependencies:
+ sudo apt install -y \
+ make rsync bzip2 \
+ golang \
+ cvs cvs-fast-export mercurial subversion \
+ asciidoctor shellcheck
+
+# Clone the reposurgeon repository
+[group('reposurgeon')]
+reposurgeon-clone:
+ git clone --config advice.detachedHead=false --depth=1 --branch {{ reposurgeon-version }} https://gitlab.com/esr/reposurgeon.git
+
+# Download the reposurgeon archive (requires bzip2 installed)
+[group('reposurgeon')]
+reposurgeon-download:
+ bzip2 --version 2>/dev/null || echo bzip2 not found!
+ curl \
+ --fail \
+ --globoff \
+ --location \
+ --proto-default https \
+ --remote-name \
+ --remote-time \
+ --retry 10 \
+ --retry-max-time 10 \
+ "https://gitlab.com/esr/reposurgeon/-/archive/{{reposurgeon-version}}/reposurgeon-{{reposurgeon-version}}.tar.bz2"
+ tar --extract --bzip2 --file "reposurgeon-{{reposurgeon-version}}.tar.bz2"
+
+# Install reposurgeon
+[group('reposurgeon')]
+reposurgeon-install: reposurgeon-dependencies
+ make -C {{reposurgeon_dir}} all
+ sudo make -C {{reposurgeon_dir}} install
+ make -C {{reposurgeon_dir}} test
+
+# Get local copies of the SVN and CVS sources
+# ===========================================
+
+# Update sourceforge mirrors (done automatically during conversion)
+[group('tools')]
+update-mirrors: _docutils-mirror _docstring-mirror _structuredtext-mirror _archives
+
+# short version: rsync -ahPvi svn.code.sf.net::p/docutils/code/* docutils-mirror
+
+_docutils-mirror:
+ # Estimated time: 60s
+ rsync \
+ --archive --human-readable --partial --progress --verbose --itemize-changes \
+ "svn.code.sf.net::p/docutils/code/*" \
+ docutils-mirror
+
+_docstring-mirror:
+ # Estimated time: 5s
+ rsync \
+ --archive --human-readable --partial --progress --verbose --itemize-changes \
+ "a.cvs.sourceforge.net::cvsroot/docstring/" \
+ docstring-mirror
+
+_structuredtext-mirror:
+ # Estimated time: 5s
+ rsync \
+ --archive --human-readable --partial --progress --verbose --itemize-changes \
+ "a.cvs.sourceforge.net::cvsroot/structuredtext/" \
+ structuredtext-mirror
+
+_archives:
+ # Get pre-CVS release archives for incorporation into history
+ [ -f dps-0.1.tar.gz ] || wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.1/dps-0.1.tar.gz
+ [ -f dps.0.2.tar.gz ] || wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.2/dps.0.2.tar.gz
+ [ -f dps.0.3.tar.gz ] || wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.3/dps.0.3.tar.gz
+ [ -f rst-0.1.tar.gz ] || wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.1/rst-0.1.tar.gz
+ [ -f rst.0.2.tar.gz ] || wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.2/rst.0.2.tar.gz
+ [ -f rst.0.3.tar.gz ] || wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.3/rst.0.3.tar.gz
+ # no need for 0.4 archives, as CVS history begins at 0.3
+ # wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.4/dps-0.4.tar.gz
+ # wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.4/restructuredtext-0.4.tar.gz
+
+ # due to inscrutable tar errors, we repack every archive
+ mkdir -p tmp_repack
+ cd tmp_repack && tar -xzf ../dps-0.1.tar.gz --one-top-level=dps-0.1 --strip-components=0
+ cd tmp_repack && tar -xzf ../dps.0.2.tar.gz --one-top-level=dps-0.2 --strip-components=1
+ cd tmp_repack && tar -xzf ../dps.0.3.tar.gz --one-top-level=dps-0.3 --strip-components=1
+ cd tmp_repack && tar -xzf ../rst-0.1.tar.gz --one-top-level=rst-0.1 --strip-components=0
+ cd tmp_repack && tar -xzf ../rst.0.2.tar.gz --one-top-level=rst-0.2 --strip-components=1
+ cd tmp_repack && tar -xzf ../rst.0.3.tar.gz --one-top-level=rst-0.3 --strip-components=1
+
+ cd tmp_repack && tar -cf docstring-0.1.tar dps-0.1
+ cd tmp_repack && tar -cf docstring-0.2.tar dps-0.2
+ cd tmp_repack && tar -cf docstring-0.3.tar dps-0.3
+ cd tmp_repack && tar -cf structuredtext-0.1.tar rst-0.1
+ cd tmp_repack && tar -cf structuredtext-0.2.tar rst-0.2
+ cd tmp_repack && tar -cf structuredtext-0.3.tar rst-0.3
+ mv tmp_repack/*.tar ./
+ rm -rf tmp_repack
+
+# Dump streams for reposurgeon
+# ============================
+
+# Dump reposurgeon streams (done automatically during conversion)
+[group('tools')]
+dump-streams: _dump-docutils-svn _dump-docstring-fi _dump-structuredtext-fi
+
+_dump-docutils-svn: _docutils-mirror
+ # Estimated time: 10 mins
+ repotool export -d docutils-mirror > docutils.svn
+
+_dump-docstring-fi: _docstring-mirror
+ # Estimated time: 10s
+ repotool export -d docstring-mirror > docstring.fi
+
+_dump-structuredtext-fi: _structuredtext-mirror
+ # Estimated time: 10s
+ repotool export -d structuredtext-mirror > structuredtext.fi
+
+# Create the git repositories
+# ===========================
+
+_common-git: _archives
+ # 'Caching' of sorts; don't rebuild if a file exists.
+ # To force a regeneration, run `just dump-streams`
+ [ -f docutils.svn ] || just _dump-docutils-svn
+ [ -f docstring.fi ] || just _dump-docstring-fi
+ [ -f structuredtext.fi ] || just _dump-structuredtext-fi
+ # Estimated time: script common.lift:
+ # Estimated time: write >common.fi: 60s
+ # Estimated time: rebuild common-git:
+ [ -f docutils_late.fi ] || reposurgeon 'script common_load.lift'
+ [ -f cvs_docstring.fi ] || reposurgeon 'script common_cvs_docstring.lift'
+ [ -f cvs_structuredtext.fi ] || reposurgeon 'script common_cvs_structuredtext.lift'
+ [ -d docutils_tmp_early ] || reposurgeon 'read <docutils_early.fi' 'prefer git' 'write docutils_tmp_early/'
+ [ -d docutils_tmp_late ] || reposurgeon 'read <docutils_late.fi' 'prefer git' 'write docutils_tmp_late/'
+ [ -d cvs_tmp_docstring ] || reposurgeon 'read <cvs_docstring.fi' 'prefer git' 'write cvs_tmp_docstring/'
+ [ -d cvs_tmp_structuredtext ] || reposurgeon 'read <cvs_structuredtext.fi' 'prefer git' 'write cvs_tmp_structuredtext/'
+ [ -d tmp_combined ] || ./common_combine.sh
+ [ -f tmp_combined.fi ] || repotool export -d tmp_combined > tmp_combined.fi
+ [ -f common.fi ] || reposurgeon 'script common_clean.lift' 'prefer git' 'rebuild common-git'
+ # just _common-combine
+
+[group('convert')]
+docutils-git: _common-git
+ reposurgeon 'script docutils.lift' 'rebuild docutils-git'
+ cd docutils-git && just ../ _post-convert
+ # Remove rel-0.15 branch. Must be done after retagging,
+ # otherwise the tip commit is lost, but for some reason
+ # the tags don't survive if reposurgeon does it.
+ cd docutils-git && git branch --delete --force rel-0.15
+
+[group('convert')]
+prest-git: _common-git
+ reposurgeon 'script prest.lift' 'rebuild prest-git'
+ cd prest-git && just ../ _post-convert
+
+[group('convert')]
+sandbox-git: _common-git
+ reposurgeon 'script sandbox.lift' 'rebuild sandbox-git'
+ cd sandbox-git && just ../ _post-convert
+
+[group('convert')]
+web-git: _common-git
+ reposurgeon 'script web.lift' 'rebuild web-git'
+ cd web-git && just ../ _post-convert
+
+[no-cd]
+_post-convert:
+ # Reinitialise repository. We do this for sanity, as git might expect
+ # things that reposurgeon doesn't provide.
+ git init
+
+ # Run a garbage-collect on the generated git repository. Import doesn't.
+ # This repack call is the active part of gc --aggressive. This call is
+ # tuned for very large repositories.
+ git -c pack.threads=1 repack -AdF --window=1250 --depth=250
+
+ # Clean repo
+ git prune
+ git rm -rf .
+ git clean -fxd
+ git reset HEAD --hard
+
+ # Check integrity
+ git fsck --full --strict --unreachable --dangling --lost-found
+
+ # Enable commit graph
+ git config core.commitGraph true
+ git config fetch.writeCommitGraph true
+ git commit-graph write --append --reachable --changed-paths
+ git commit-graph verify
+
+ # End by re-reinitialising repository. Why not!
+ git init
+
+# Comparison commands
+# ===================
+
+# Make a local checkout of the source mirror for inspection
+_docutils-svn-export:
+ svn export --ignore-keywords https://svn.code.sf.net/p/docutils/code/trunk docutils-svn-export
+
+# Compare the histories of the unconverted and converted repositories at HEAD.
+[group('tools')]
+compare: _docutils-svn-export docutils-git
+ repotool compare docutils-svn-export docutils-git
+
+# Bundle the conversion files
+# ===========================
+
+SOURCES := "Makefile Justfile docutils.map common_load.lift common_cvs_docstring.lift common_cvs_structuredtext.lift common_combine.sh common_clean.lift docutils.lift prest.lift sandbox.lift web.lift post-convert.sh"
+# Bundle the conversion files
+[group('tools')]
+dist:
+ tar --dereference --transform 's:^:docutils-conversion/:' -czvf docutils-conversion.tar.gz $(SOURCES)
+
+# Publish the git repositories
+# ============================
+
+# Publish the git repositories
+[group('tools')]
+push-remote:
+ # Docutils
+ cd docutils-git; git remote add origin https://github.com/docutils-conversion/docutils.git
+ cd docutils-git; git push -u origin --tags
+ # Prest
+ cd prest-git; git remote add origin https://github.com/docutils-conversion/prest.git
+ cd prest-git; git push -u origin --tags
+ # Sandbox
+ cd sandbox-git; git remote add origin https://github.com/docutils-conversion/sandbox.git
+ cd sandbox-git; git push -u origin --tags
+ # Web
+ cd web-git; git remote add origin https://github.com/docutils-conversion/web.git
+ cd web-git; git push -u origin --tags
Modified: trunk/sandbox/aa-turner/git_conversion/Makefile
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/Makefile 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/Makefile 2024-08-07 01:41:55 UTC (rev 9856)
@@ -6,11 +6,10 @@
.PHONY: convert
convert: docutils-git prest-git sandbox-git web-git
-
# Install reposurgeon
# ===========================
-# requires reposurgeon 4.31; this is the latest version in Ubuntu 22.04
+# requires reposurgeon 4.38; this is the latest version in Ubuntu 24.04
.PHONY: reposurgeon-install
reposurgeon-install:
sudo apt install --yes make rsync cvs-fast-export subversion cvs reposurgeon
@@ -28,9 +27,52 @@
structuredtext-mirror:
rsync --archive --human-readable --partial --progress --verbose --itemize-changes a.cvs.sourceforge.net::cvsroot/structuredtext/ structuredtext-mirror
+# Get local copies of the pre-CVS release archives
+# ================================================
+
+dps-0.1.tar.gz:
+ wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.1/dps-0.1.tar.gz
+dps.0.2.tar.gz:
+ wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.2/dps.0.2.tar.gz
+dps.0.3.tar.gz:
+ wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.3/dps.0.3.tar.gz
+rst-0.1.tar.gz:
+ wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.1/rst-0.1.tar.gz
+rst.0.2.tar.gz:
+ wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.2/rst.0.2.tar.gz
+rst.0.3.tar.gz:
+ wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.3/rst.0.3.tar.gz
+# no need for 0.4 archives, as CVS history begins at 0.3
+# wget --no-verbose https://master.dl.sourceforge.net/project/docstring/dps/0.4/dps-0.4.tar.gz
+# wget --no-verbose https://master.dl.sourceforge.net/project/structuredtext/restructuredtext/0.4/restructuredtext-0.4.tar.gz
+
+.PHONY: repack_archives
+repack_archives: dps-0.1.tar.gz dps.0.2.tar.gz dps.0.3.tar.gz rst-0.1.tar.gz rst.0.2.tar.gz rst.0.3.tar.gz
+ # due to inscrutable tar errors, we repack every archive
+ mkdir -p tmp_repack
+ cd tmp_repack && tar -xzf ../dps-0.1.tar.gz --one-top-level=dps-0.1 --strip-components=0
+ cd tmp_repack && tar -xzf ../dps.0.2.tar.gz --one-top-level=dps-0.2 --strip-components=1
+ cd tmp_repack && tar -xzf ../dps.0.3.tar.gz --one-top-level=dps-0.3 --strip-components=1
+ cd tmp_repack && tar -xzf ../rst-0.1.tar.gz --one-top-level=rst-0.1 --strip-components=0
+ cd tmp_repack && tar -xzf ../rst.0.2.tar.gz --one-top-level=rst-0.2 --strip-components=1
+ cd tmp_repack && tar -xzf ../rst.0.3.tar.gz --one-top-level=rst-0.3 --strip-components=1
+
+ cd tmp_repack && tar -cf docstring-0.1.tar dps-0.1
+ cd tmp_repack && tar -cf docstring-0.2.tar dps-0.2
+ cd tmp_repack && tar -cf docstring-0.3.tar dps-0.3
+ cd tmp_repack && tar -cf structuredtext-0.1.tar rst-0.1
+ cd tmp_repack && tar -cf structuredtext-0.2.tar rst-0.2
+ cd tmp_repack && tar -cf structuredtext-0.3.tar rst-0.3
+ mv tmp_repack/*.tar ./
+ rm -rf tmp_repack
+
# Dump streams for reposurgeon
# ============================
+# Dump reposurgeon streams (done automatically during conversion)
+.PHONY: dump-streams
+dump-streams: docutils.svn docstring.fi structuredtext.fi
+
docutils.svn: docutils-mirror
repotool export -d docutils-mirror > docutils.svn
@@ -43,31 +85,53 @@
# Create the git repositories
# ===========================
-common-git: docutils.svn docstring.fi structuredtext.fi
- # prepare the two
- reposurgeon 'script common_cvs.lift'
+# Also outputs docutils_early.fi
+docutils_late.fi: common_load.lift docutils.svn
reposurgeon 'script common_load.lift'
- mkdir -p docutils_tmp_early
- reposurgeon 'read <docutils_early.fi' 'prefer git' 'write docutils_tmp_early'
- mkdir -p docutils_tmp_late
- reposurgeon 'read <docutils_late.fi' 'prefer git' 'write docutils_tmp_late'
+
+docutils_tmp_early: docutils_late.fi
+ reposurgeon 'read <docutils_early.fi' 'prefer git' 'write docutils_tmp_early/'
+
+docutils_tmp_late: docutils_late.fi
+ reposurgeon 'read <docutils_late.fi' 'prefer git' 'write docutils_tmp_late/'
+
+cvs_docstring.fi: common_cvs_docstring.lift docstring.fi
+ reposurgeon 'script common_cvs_docstring.lift'
+
+cvs_tmp_docstring: cvs_docstring.fi
+ reposurgeon 'read <cvs_docstring.fi' 'prefer git' 'write cvs_tmp_docstring/'
+
+cvs_structuredtext.fi: common_cvs_structuredtext.lift structuredtext.fi
+ reposurgeon 'script common_cvs_structuredtext.lift'
+
+cvs_tmp_structuredtext: cvs_structuredtext.fi
+ reposurgeon 'read <cvs_structuredtext.fi' 'prefer git' 'write cvs_tmp_structuredtext/'
+
+tmp_combined: common_combine.sh docutils_tmp_early cvs_tmp_docstring cvs_tmp_structuredtext
./common_combine.sh
- # TODO replace symlinks with copies
- reposurgeon 'script common_clean.lift' 'write >common.fi' 'rebuild common-git'
-docutils-git: common-git docutils.lift
+tmp_combined.fi: tmp_combined
+ repotool export -d tmp_combined > tmp_combined.fi
+
+common.fi: common_clean.lift tmp_combined.fi docutils_late.fi
+ reposurgeon 'script common_clean.lift' 'prefer git' 'rebuild common-git'
+
+common-git: common.fi post-convert.sh
+ ./post-convert.sh common-git
+
+docutils-git: docutils.lift common.fi post-convert.sh
reposurgeon 'script docutils.lift' 'rebuild docutils-git'
./post-convert.sh docutils-git
-prest-git: common-git prest.lift
+prest-git: prest.lift common.fi post-convert.sh
reposurgeon 'script prest.lift' 'rebuild prest-git'
./post-convert.sh prest-git
-sandbox-git: common-git sandbox.lift
+sandbox-git: sandbox.lift common.fi post-convert.sh
reposurgeon 'script sandbox.lift' 'rebuild sandbox-git'
./post-convert.sh sandbox-git
-web-git: common-git web.lift
+web-git: web.lift common.fi post-convert.sh
reposurgeon 'script web.lift' 'rebuild web-git'
./post-convert.sh web-git
@@ -76,19 +140,38 @@
# Make a local checkout of the source mirror for inspection
docutils-svn-export:
+ # --ignore-keywords keeps RCS keywords ("$Date$" etc) unchanged
svn export --ignore-keywords https://svn.code.sf.net/p/docutils/code/trunk docutils-svn-export
# Compare the histories of the unconverted and converted repositories at HEAD.
.PHONY: compare
-compare: docutils-svn-export docutils-git
+compare: docutils-svn-export docutils-git
repotool compare docutils-svn-export docutils-git
# Bundle the conversion files
# ===========================
-SOURCES = Makefile docutils.map common.lift cvs.lift docutils.lift prest.lift sandbox.lift web.lift post-convert.sh
+SOURCES = Makefile Justfile docutils.map common_load.lift common_cvs_docstring.lift common_cvs_structuredtext.lift common_combine.sh common_clean.lift docutils.lift prest.lift sandbox.lift web.lift post-convert.sh
docutils-conversion.tar.gz: $(SOURCES)
tar --dereference --transform 's:^:docutils-conversion/:' -czvf docutils-conversion.tar.gz $(SOURCES)
.PHONY: dist
dist: docutils-conversion.tar.gz
+
+# Publish the git repositories
+# ============================
+
+.PHONY: push-remote
+push-remote:
+ # Docutils
+ cd docutils-git; git remote add origin https://github.com/docutils-conversion/docutils.git
+ cd docutils-git; git push -u origin --tags
+ # Prest
+ cd prest-git; git remote add origin https://github.com/docutils-conversion/prest.git
+ cd prest-git; git push -u origin --tags
+ # Sandbox
+ cd sandbox-git; git remote add origin https://github.com/docutils-conversion/sandbox.git
+ cd sandbox-git; git push -u origin --tags
+ # Web
+ cd web-git; git remote add origin https://github.com/docutils-conversion/web.git
+ cd web-git; git push -u origin --tags
Modified: trunk/sandbox/aa-turner/git_conversion/common_clean.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/common_clean.lift 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/common_clean.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,50 +1,73 @@
# common_clean.lift
-# These reposurgeon scripts are common to all repositories.
-# They are run in order:
+# This is the one of the common reposurgeon lift script
+# files, creating the common history that the four
+# repo-specific scripts use as their inputs. This file is
+# called as part of the common-git target, and should not
+# be loaded directly. It has no inputs.
+# These files require reposurgeon 4.38.
+
+# These 'common' scripts are run in order:
# 1. common_load.lift
-# 2. common_merge.sh
-# 3. common_clean.lift
+# 2. common_cvs_docstring.lift
+# 3. common_cvs_structuredtext.lift
+# 4. common_combine.sh
+# 5. common_clean.lift
# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
set canonicalize
+# Enable fancy progress messages even when not on a tty.
set progress
-prefer git
-read --format=git tmp_combined/
-prefer git
+read <tmp_combined.fi
+read <docutils_late.fi
-read --format=git docutils_tmp_late/
-prefer git
+# After reading the input streams,
+# if something goes wrong we'd prefer not to abort.
+set relax
-# Unite the combined histories with Late
-# this makes the tip of tmp_combined the root commit for docutils_late
+# Unite the combined histories with docutils-late
+# this makes the tip of tmp_combined ("~merge histories~")
+# the root commit for docutils_late ("Initial revision")
choose tmp_combined
-@max(=C) & /~merge histories~/ graft docutils_tmp_late
+@max(=C) & /~merge histories~/c graft docutils_late
rename docutils
-renumber
# Delete surgery branches
-branch delete heads/docutils
-branch delete heads/docstring
-branch delete heads/structuredtext
-branch rename /heads\/(.*)-docutils_tmp_late/ "heads/\1"
+branch delete refs/heads/docutils
+branch delete refs/heads/docstring
+branch delete refs/heads/structuredtext
+branch rename /heads\/(.*)-docutils_late/ "heads/\1"
+branch rename /tags\/(.*)-docutils_late/ "tags/\1"
# Update metadata of merge commit
-# <2002-04-20T03:00:05Z#1> Initial revision (first commit of docutils_late)
+# <2002-04-20T03:01:52Z> Initial revision (first commit of docutils_late)
# the parent of this commit is the merge commit, we can't rely on commit
# message matching as we blank out the commit message and the date is
# indeterminate
-@max(@par(<2002-04-20T03:00:05Z#1>)) assign --singleton merge_commit
-merge_commit setfield comment "Combine into Docutils\n\n***Commit added during git conversion***.\n\nMerged projects:\n\n- docutils (SVN)\n- docstring (CVS)\n- structuredtext (CVS)\n"
+#@max(@par(<2002-04-20T03:01:52Z>)) assign --singleton merge_commit
+=C & /~merge histories~/c assign --singleton merge_commit
+merge_commit setfield comment "Combine into Docutils\n\n***Commit created during git conversion***\n\nMerged projects:\n\n- docutils (SVN)\n- docstring (CVS)\n- structuredtext (CVS)\n"
merge_commit attribution =A set "David Goodger" "[email protected]" "Sat Apr 20 02:00:00 2002 +0000"
merge_commit attribution =C set "David Goodger" "[email protected]" "Sat Apr 20 02:00:00 2002 +0000"
-# Remove merge files
-define delete_merge {
-<2002-04-20T03:00:05Z#1> add D {0}
-}
-
+# Allow file moves from dps/ and restructuredtext/ to be recognised
+# This is quite involved. First we remove existing file operations
+# after the merge. Then we remove the reset (deleteall) marker in
+# the first commit, and finally manually add delete file operations
+# to each dps/ and restructuredtext/ file. We can't use expunge,
+# as that simply removes modifiacations rather than adding deletes.
+<2002-04-20T03:01:52Z#1> assign --singleton du_first_commit
+@suc(du_first_commit) expunge "(dps|restructuredtext)/.*")
+du_first_commit remove 1
+define delete_merge <2002-04-20T03:01:52Z#1> add D "{0}"
do delete_merge dps/COPYING.txt
do delete_merge dps/HISTORY.txt
do delete_merge dps/MANIFEST.in
@@ -164,6 +187,11 @@
# Ensure every commit message ends with a single new line
=C append "\n" --rstrip
-=C append "\n"
+# Export to common.fi
+write >common.fi
+
+# Timing statistics
+timing
+
exit
Modified: trunk/sandbox/aa-turner/git_conversion/common_combine.sh
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/common_combine.sh 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/common_combine.sh 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,16 +1,23 @@
#!/bin/sh
+# exit on error or undefined variable; echo commands
+set -eux
+
# These reposurgeon scripts are common to all repositories.
# They are run in order:
# 1. common_load.lift
-# 2. common_merge.sh
-# 3. common_clean.lift
+# 2. common_cvs_docstring.lift
+# 3. common_cvs_structuredtext.lift
+# 4. common_combine.sh
+# 5. common_clean.lift
-mkdir -p tmp_combined
+mkdir tmp_combined
cd tmp_combined
git init --quiet
git config core.filemode false
+git config user.email "[email protected]"
+git config user.name "David Goodger"
git remote add tmp_early ../docutils_tmp_early
git remote add tmp_docstring ../cvs_tmp_docstring
@@ -18,16 +25,21 @@
git fetch --all
git switch -c docutils tmp_early/master
-git switch -c docstring tmp_docstring/docstring
-git switch -c structuredtext tmp_structuredtext/structuredtext
+git switch -c docstring tmp_docstring/master-docstring
+git switch -c structuredtext tmp_structuredtext/master-structuredtext
+
+# This will claim to fail, hence using read-tree
+# https://stackoverflow.com/a/31186732
git switch docutils
-
-git merge --allow-unrelated-histories -m "~merge histories~" docutils structuredtext docstring
+git merge --allow-unrelated-histories -m "~merge histories~" docutils structuredtext docstring || true
git read-tree docutils structuredtext docstring
+# Remove the old web directories
+git rm -r web_docstring web_structuredtext
+# Commit the index and reset the working tree
git commit -m "~merge histories~"
git reset --hard
-git rm -r web_docstring web_structuredtext
-git commit --amend --all -m "~merge histories~"
-#git rm -rf -- *
-#git checkout docutils -- .
+git branch --delete docstring structuredtext
+git remote remove tmp_early
+git remote remove tmp_docstring
+git remote remove tmp_structuredtext
Added: trunk/sandbox/aa-turner/git_conversion/common_cvs_docstring.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/common_cvs_docstring.lift (rev 0)
+++ trunk/sandbox/aa-turner/git_conversion/common_cvs_docstring.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -0,0 +1,107 @@
+# common_cvs_docstring.lift
+
+# This is the one of the common reposurgeon lift script
+# files, creating the common history that the four
+# repo-specific scripts use as their inputs. This file is
+# called as part of the common-git target, and should not
+# be loaded directly. It has one input (docutils.map).
+# These files require reposurgeon 4.38.
+
+# These 'common' scripts are run in order:
+# 1. common_load.lift
+# 2. common_cvs_docstring.lift
+# 3. common_cvs_structuredtext.lift
+# 4. common_combine.sh
+# 5. common_clean.lift
+
+# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
+set canonicalize
+# Enable fancy progress messages even when not on a tty.
+set progress
+
+# Read CVS docstring repository
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#CVS
+# Do not modify .gitignore files in the source tree
+# Estimated time: 5s
+read --preserve --no-automatic-ignores --user-ignores <docstring.fi
+
+# Load the CVS-to-Git author IDs map
+# CSV just uses a username, Git demands a name and email address
+# MUST BE AFTER 'read' otherwise reposurgeon panics (SIGSEV).
+# Authors here are goodger, gtk, and richard.
+authors read <docutils.map
+
+# Write 'virgin' conversion with no changes
+#write --format=git virgin_docstring/
+
+# After reading the author map and the CVS dump,
+# if something goes wrong we'd prefer not to abort.
+set relax
+
+# Update commit messages
+# Attempt to massage comments into a git-friendly form
+# with a blank separator line after a summary line.
+gitify
+# Replace \r\n (Windows-style) line endings with \n
+=C filter dedos
+
+# Remove uneeded "import-1.1.1" branch
+reset delete refs/tags/rel-0-3
+branch delete refs/heads/import-1.1.1
+<2001-07-22T22:36:35Z> setfield comment "First Imported"
+
+# Combine "*** empty log message ***" commits with neighbours
+# where appropriate
+<2002-02-06T02:56:21Z> setfield comment "\n"
+<2002-02-06T02:56:21Z> squash
+# Drop empty commit that removes a single space in
+# dps/dps/__init__.py
+<2002-03-16T06:09:45Z> delete commit --quiet
+
+# Give "*** empty log message ***" actual messages
+# Chosen to be in the style of the existing repo/commit messages
+<2002-01-25T23:58:36Z> setfield comment "updated"
+<2002-02-06T03:02:51Z> setfield comment "Added core, readers"
+<2001-09-05T02:33:58Z> setfield comment "added python-docstring-mode.txt"
+
+# Incorporate pre-CSV release archives into the history
+# Only use 0.1-0.3, as 0.4 is already in the CVS history
+# Force fake committer details (always "Fred J. Foonly <[email protected]")
+set testmode # 'set fakeuser' in 5.0+
+incorporate --firewall docstring-0.1.tar docstring-0.2.tar docstring-0.3.tar
+clear testmode
+/Fred J. Foonly <[email protected]>/ path rename "^(.*)" "dps/\1" --force
+# This isn't exactly accurate as 0.2 and 0.3 use "dps.0.x". It'll do.
+/Fred J. Foonly <[email protected]>/ filter regex /docstring-/dps-/c
+/Fred J. Foonly <[email protected]>/ append ".gz\n\n***Commit created during git conversion***" --rstrip
+# "First Imported" and the 0.3 archive have identical timestamps.
+# Make the 0.3 archive the parent of "First Imported",
+# and delete the firewall commit.
+<2001-07-22T22:36:35Z#1>,<2001-07-22T22:36:35Z#2> reparent
+/Firewall commit/c delete commit
+# Remove traces of the fake committer
+/Fred J. Foonly <[email protected]>/ attribution =C set "David Goodger" [email protected]
+
+# Remove autogenerated .gitignore
+expunge .gitignore
+
+# Prepare for merge; rename master branch
+branch rename heads/master heads/master-docstring
+
+# Prepare for merge; Rename web directory
+path rename "web/(.*)" "web_docstring/\1" --force
+
+# Export to git
+write >cvs_docstring.fi
+
+# Timing statistics
+timing
+
+exit
Added: trunk/sandbox/aa-turner/git_conversion/common_cvs_structuredtext.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/common_cvs_structuredtext.lift (rev 0)
+++ trunk/sandbox/aa-turner/git_conversion/common_cvs_structuredtext.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -0,0 +1,149 @@
+# common_cvs_structuredtext.lift
+
+# This is the one of the common reposurgeon lift script
+# files, creating the common history that the four
+# repo-specific scripts use as their inputs. This file is
+# called as part of the common-git target, and should not
+# be loaded directly. It has one input (docutils.map).
+# These files require reposurgeon 4.38.
+
+# These 'common' scripts are run in order:
+# 1. common_load.lift
+# 2. common_cvs_docstring.lift
+# 3. common_cvs_structuredtext.lift
+# 4. common_combine.sh
+# 5. common_clean.lift
+
+# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
+set canonicalize
+# Enable fancy progress messages even when not on a tty.
+set progress
+
+# Read CVS structuredtext repository
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#CVS
+# Do not modify .gitignore files in the source tree
+# Estimated time: 5s
+read --preserve --no-automatic-ignores --user-ignores <structuredtext.fi
+
+# Load the CVS-to-Git author IDs map
+# CSV just uses a username, Git demands a name and email address
+# MUST BE AFTER 'read' otherwise reposurgeon panics (SIGSEV).
+# Authors here are goodger, gtk, and richard.
+authors read <docutils.map
+
+# Write 'virgin' conversion with no changes
+#write --format=git virgin_structuredtext/
+
+# After reading the author map and the CVS dump,
+# if something goes wrong we'd prefer not to abort.
+set relax
+
+# Update commit messages
+# Attempt to massage comments into a git-friendly form
+# with a blank separator line after a summary line.
+gitify
+# Replace \r\n (Windows-style) line endings with \n
+=C filter dedos
+
+# Remove uneeded "import-1.1.1" branch
+reset delete refs/heads/rel-0-3
+reset delete refs/tags/RELEASE
+branch delete refs/heads/import-1.1.1
+<2001-07-21T22:14:24Z#1> setfield comment "First Imported"
+<2001-07-21T22:14:24Z#2> delete commit --quiet
+
+# Remove uneeded "import-1.1.1" branch
+branch delete refs/heads/import-1.1.1
+branch delete refs/heads/rel-0-3
+branch delete refs/tags/RELEASE
+
+# Create merge commit from "merged from branch Rrefactor-test"
+# to tip of "heads/Rrefactor-test", and make Rrefactor-test
+# start from "initial checkin"
+<2001-07-22T22:45:33Z>,<2001-07-25T08:09:21Z> reparent --rebase
+<2001-09-01T16:29:12Z>,<2001-09-01T15:19:21Z> merge
+branch delete refs/heads/Rrefactor-test
+
+# Make moves more obvious in the Rrefactor-test branch
+# RTSTestSupport & ParserTestCase (<2001-09-01T15:10:16Z>, <2001-09-01T15:18:51Z>)
+# UnitTestFolder & TestFramework (<2001-09-01T15:10:50Z>, <2001-09-01T15:18:18Z>)
+# alltests/test_all (<2001-09-01T15:13:10Z>, <2001-09-01T15:19:21Z>)
+<2001-09-01T15:10:16Z>,<2001-09-01T15:18:51Z>,<2001-09-01T15:10:50Z>,<2001-09-01T15:18:18Z>,<2001-09-01T15:13:10Z>,<2001-09-01T15:19:21Z>,<2001-09-01T15:14:51Z> reorder
+<2001-09-01T15:10:16Z> squash
+<2001-09-01T15:10:50Z> squash
+<2001-09-01T15:13:10Z> squash
+
+# Merge "path change" and "initial checkin"
+<2001-07-22T22:27:43Z> squash
+<2001-07-22T22:45:33Z> setfield comment "initial checkin"
+
+# Remove empty commits
+=Z setfield comment "\n"
+=Z squash --empty-only --delete
+
+# Combine "*** empty log message ***" commits with neighbours
+# where appropriate
+# languages/__init__.py into "Added parser language module support"
+<2001-09-10T04:46:13Z>,<2001-09-10T04:42:28Z>,<2001-09-10T04:44:21Z> reorder
+<2001-09-10T04:46:13Z> setfield comment "\n"
+<2001-09-10T04:46:13Z> squash
+<2002-01-08T02:42:28Z> setfield comment "\n"
+<2002-01-08T02:42:28Z> squash --pushback
+<2002-02-20T04:29:13Z> setfield comment "\n"
+<2002-02-20T04:29:13Z> squash --pushback
+
+# Drop empty commit just before project retirement
+<2002-04-20T16:23:41Z> delete commit --quiet
+
+# Give "*** empty log message ***" actual messages
+# Chosen to be in the style of the existing repo/commit messages
+<2001-09-04T04:11:01Z> setfield comment "Added test_TableParser"
+<2001-10-26T04:33:17Z> setfield comment "updated"
+<2001-10-30T05:05:00Z> setfield comment "Added test_transitions"
+<2001-11-06T23:11:52Z> setfield comment "Added test_substitutions"
+<2002-02-07T01:53:41Z> setfield comment "updated"
+<2002-03-07T03:45:42Z> setfield comment "Added test_citations"
+<2002-03-16T05:39:36Z> setfield comment "updated"
+<2002-03-28T04:28:10Z> setfield comment "updated"
+
+# Incorporate pre-CSV release archives into the history
+# Only use 0.1-0.3, as 0.4 is already in the CVS history
+# Force fake committer details (always "Fred J. Foonly <[email protected]")
+set testmode # 'set fakeuser' in 5.0+
+incorporate --firewall structuredtext-0.1.tar structuredtext-0.2.tar structuredtext-0.3.tar
+clear testmode
+/Fred J. Foonly <[email protected]>/ path rename "^(.*)" "restructuredtext/\1" --force
+# This isn't exactly accurate as 0.2 and 0.3 use "rst.0.x". It'll do.
+/Fred J. Foonly <[email protected]>/ filter regex /structuredtext-/rst-/c
+/Fred J. Foonly <[email protected]>/ append ".gz\n\n***Commit created during git conversion***" --rstrip
+# "First Imported" and the 0.3 archive have identical timestamps.
+# Make the 0.3 archive the parent of "First Imported",
+# and delete the firewall commit.
+<2001-07-21T22:14:24Z#1>,<2001-07-21T22:14:24Z#2> reparent
+/Firewall commit/c delete commit
+# Remove traces of the fake committer
+/Fred J. Foonly <[email protected]>/ attribution =C set "David Goodger" [email protected]
+
+# Remove autogenerated .gitignore
+expunge .gitignore
+
+# Prepare for merge; rename master branch
+branch rename heads/master heads/master-structuredtext
+
+# Prepare for merge; Rename web directory
+path rename "web/(.*)" "web_structuredtext/\1" --force
+
+# Export to git
+write >cvs_structuredtext.fi
+
+# Timing statistics
+timing
+
+exit
Modified: trunk/sandbox/aa-turner/git_conversion/common_load.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/common_load.lift 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/common_load.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,66 +1,424 @@
# common_load.lift
+# Estimated time: 90s
-# These reposurgeon scripts are common to all repositories.
-# They are run in order:
+# This is the one of the common reposurgeon lift script
+# files, creating the common history that the four
+# repo-specific scripts use as their inputs. This file is
+# called as part of the common-git target, and should not
+# be loaded directly. It has one input (docutils.map).
+# These files require reposurgeon 4.38.
+
+# These 'common' scripts are run in order:
# 1. common_load.lift
-# 2. common_merge.sh
-# 3. common_clean.lift
+# 2. common_cvs_docstring.lift
+# 3. common_cvs_structuredtext.lift
+# 4. common_combine.sh
+# 5. common_clean.lift
# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
set canonicalize
+# Enable fancy progress messages even when not on a tty.
set progress
-prefer git
# Read subversion repo
-read --no-automatic-ignores --user-ignores <docutils.svn
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#_reading_subversion_repositories
+# Do not modify .gitignore files in the source tree
+# Preserve the history up to deletion when a branch or tag was deleted
+# in SVN (under refs/deleted/)
+# Estimated time: 30s
+read --preserve --no-automatic-ignores --user-ignores <docutils.svn
+
+# Load the Subversion-to-Git author IDs map
+# Subversion just uses a username, Git demands a name and email address
+# MUST BE AFTER 'read' otherwise reposurgeon panics (SIGSEV).
authors read <docutils.map
-prefer git
+# Write 'virgin' conversion with no changes
+#write --format=git virgin_docutils/
+
+# After reading the author map and the SVN dump,
+# if something goes wrong we'd prefer not to abort.
+set relax
+
# Update commit messages
+# Attempt to massage comments into a git-friendly form
+# with a blank separator line after a summary line.
gitify
+# Replace \r\n (Windows-style) line endings with \n
=C filter dedos
-# Add backreference to SVN IDs
-=C append "\n\nSubversion-Revision-ID: %LEGACY%" --legacy --rstrip
+# Add backreference to SVN IDs as a git trailer
+# `--rstrip` right-strips the comment *before* appending the text
+=C append "\n\nSubversion-Revision: r%LEGACY%\n" --legacy --rstrip
# Delete branch-creation commits in Subversion, which are prefixed with
# "emptycommit".
tag delete /emptycommit/
-# Delete invalid tags and branches
-tag delete deleted/r3814/docutils-0.3.9-root
-tag delete rel-0.15-root
-branch delete /tags\/.*/
+# Delete '-tipdelete' tags, these all have branches for the tip
+tag delete /tipdelete$/
+
+# Delete invalid tags and branches with no actual changes
+# (refs/tags/ is needed for lightweight tags)
+# 'initial' (r63): manufactured by cvs2svn
+tag delete initial
+# 'start' (r1558): combination of r2, r1550, and r1555
branch delete refs/tags/start
+# 'merged_to_nesting' (r2576): just deletes sandbox/ and web/
branch delete refs/tags/merged_to_nesting
+# 'address-rendering' (r4314): re-applies reverted r4311 in new branch
branch delete refs/heads/address-rendering
+# 'index-bug': fixed in https://sourceforge.net/p/docutils/bugs/448/
branch delete refs/heads/index-bug
+# 'root' tags for branch points
+tag delete deleted/r3130/multiple-ids-root
+tag delete deleted/r4668/directives-root
+tag delete rel-0.15-root
+# Uninteresting working branch (merged in r3770)
+branch delete refs/deleted/r3771/heads/todo2
+# Integrated into 'deleted/r3771/todo2'
+branch delete refs/deleted/r3773/heads/todo
+# Only delete ops
+branch delete refs/deleted/r3540-1/heads/ax
+branch delete refs/deleted/r3540-3/heads/tibs
+# Duplicates of r22, r23, and full history of PEP 287.
+branch delete refs/deleted/r3540-2/heads/goodger
+# Duplicate of r1555
+branch delete refs/deleted/r3540-4/heads/vendor
+# Integrated into 'deleted/r5620/abolish-userstring-haskey'
+branch delete refs/deleted/r5611/heads/abolish-userstring
+# Only backports from master, no 0.4.X release was ever made
+branch delete refs/deleted/r8125/heads/docutils-0.4
+# Invalid release tags pointing to the branching point
+tag delete deleted/r3383/docutils-
+tag delete deleted/r3814/docutils-0.3.9
+tag delete deleted/r4267/docutils-0.4
+reset delete refs/deleted/r3383/tags/docutils-
+reset delete refs/deleted/r3814/tags/docutils-0.3.9
+reset delete refs/deleted/r4267/tags/docutils-0.4
+# Remove useless commits: web/docutils
+# Indentical content was added to web/docutils.txt and web/index.txt
+# in r2 and r4, three minutes apart. 30 seconds later, docutils.txt
+# was deleted in r6 (and that path never modified again)
+<2>,<6> squash --quiet --delete
+
+# Merge split "initial revision" commits (r18 into r17)
+<17> setfield comment "\n"
+<17> squash
+<18> filter regex /r18/r17\nSubversion-Revision: r18/c
+
# Remove "This commit was manufactured by cvs2svn ..." commits
-<1813> squash --quiet --delete
+# r1813: "This commit was manufactured by cvs2svn to create branch 'nesting'."
+# only contains commit with file deletions
+<1813> delete commit
+# Squash r2531 into r2532 ("Synced nesting with recent HEAD changes")
<2531> setfield comment "\n"
<2531> squash
+# Squash r2573 into r2577 ("Merge *all* HEAD revisions into nesting")
<2573> setfield comment "\n"
<2573> squash
+# Add squashed subversion ID's (/c restricts to commit message only)
+<2532> filter regex /r2532/r2531\nSubversion-Revision: r2532/c
+<2577> filter regex /r2577/r2573\nSubversion-Revision: r2577/c
-# Merge split "initial revision" commits
-<18> setfield comment "Subversion-Revision-ID: 18"
-<18> squash --pushback
-renumber
+# Remove test commits (r7802, r7803)
+<7802>,<7803> delete commit --quiet
+# r3521 should be a child of r3513 (svn mistake)
+# r3513 deletes sandbox/ and web/ and moves docutils/ to root,
+# 3515-1 moves root back to docutils/
+<3513>,<3521> reparent --rebase
+<3513> delete commit --quiet
+<3515-1> delete commit --quiet
+
+# Merge setup.py/flit commits to show moves
+<9448>,<9450>,<9449> reorder
+<9450> setfield comment "\n"
+<9450> squash --pushback
+<9448> filter regex /r9448/r9448\nSubversion-Revision: r9450/c
+
+# The 'better-emacs' branch has no parent. r3848 is the immediate
+# chronological predecessor. Also move the files to the correct
+# location to make merging easier, and delete the now-drop-only
+# commit (r3850).
+@dsc(<3850>) path rename "^emacs/(.*)" "docutils/tools/editors/emacs/\1" --force
+<3848>,<3851> reparent --rebase
+<3850> delete commit --quiet
+
+# Drop 'empty' branch creation commits.
+# These commits delete all root content and make "docutils/"
+# the new root, but have no actual changes.
+define drop_branch_commit {
+@dsc({0}) path rename "^(.*)" "docutils/\1" --force
+{0} setfield comment "\n"
+{0} squash --delete --quiet
+}
+
+# r3162: root of deleted/r3171-1/reporter-categories
+do drop_branch_commit <3162>
+# r4011: root of deleted/r4158/s5
+do drop_branch_commit <4011>
+# r4952: root of plugins
+do drop_branch_commit <4952>
+# r5000: root of deleted/r5015-1/include-after-until
+do drop_branch_commit <5000>
+# r5043: root of deleted/r5624/adjacent-citations
+do drop_branch_commit <5043>
+# r5514: root of lossless-rst-writer
+do drop_branch_commit <5514>
+# r5609: root of deleted/r5620/abolish-userstring-haskey
+do drop_branch_commit <5609>
+
+# Fix file paths in the subdocs branch
+# We remove all file delete operations, and rename all remaining
+# paths to restore the docutils/ directory
+# subdocs
+<5265> remove deletes
+@dsc(<5265>) path rename "^(.*)" "docutils/\1" --force
+
+# Create merge commits for branches
+# r3129 merges deleted/r3130/multiple-ids
+<3129>,<3128> merge
+branch delete refs/deleted/r3130/heads/multiple-ids
+# r3171-2 merges deleted/r3171-1/reporter-categories
+<3171-2>,<3163> merge
+branch delete refs/deleted/r3171-1/heads/reporter-categories
+# r3581 merges deleted/r3584_blais/interrupt_render
+<3581>,<3580> merge
+branch delete refs/deleted/r3584/heads/blais_interrupt_render
+# r3860 merges deleted/r3862/better-emacs
+<3860>,<3859> merge
+branch delete refs/deleted/r3862/heads/better-emacs
+# 3892-2 merges deleted/r3892-1/transforms
+<3892-2>,<3891> merge
+branch delete refs/deleted/r3892-1/heads/transforms
+# r4156 merges deleted/r4158/s5
+<4156>,<4155> merge
+branch delete refs/deleted/r4158/heads/s5
+# r4667 merges deleted/r4668/directives
+<4667>,<4665> merge
+branch delete refs/deleted/r4668/heads/directives
+# r5015-2 merges deleted/r5015-1/include-after-until
+<5015-2>,<5014> merge
+branch delete refs/deleted/r5015-1/heads/include-after-until
+# r5618 merges deleted/r5620/abolish-userstring-haskey
+<5618>,<5616> merge
+branch delete refs/deleted/r5620/heads/abolish-userstring-haskey
+# r5623 merges deleted/r5624/adjacent-citations
+<5623>,<5622> merge
+branch delete refs/deleted/r5624/heads/adjacent-citations
+
+# Drop 'Spelling fixes' commits in release branches
+<8093-2> squash --quiet --delete --tagback
+<8093-3> squash --quiet --delete --tagback
+<8093-4> squash --quiet --delete --tagback
+<8093-5> squash --quiet --delete --tagback
+<8093-6> squash --quiet --delete --tagback
+<8093-7> squash --quiet --delete --tagback
+
+# Drop r4331 (no changes other than SVN metadata)
+<4331> squash --quiet --delete --tagback
+
+define fix_du_tag_dir {
+{0} remove deletes
+{0} path rename "^(.*)" "docutils/\1" --force
+}
+
+# tag: docutils-0.3.9
+do fix_du_tag_dir <3815>
+# tag: docutils-0.3.7
+do fix_du_tag_dir <3816>
+# tag: docutils-0.4
+do fix_du_tag_dir <4268>
+# tag: docutils-0.5
+do fix_du_tag_dir <5579>
+# tag: docutils-0.6
+do fix_du_tag_dir <6168>
+# tag: docutils-0.7
+do fix_du_tag_dir <6358>
+# tag: docutils-0.8
+do fix_du_tag_dir <7088>
+# tag: docutils-0.8.1
+do fix_du_tag_dir <7108>
+# tag: docutils-0.9
+do fix_du_tag_dir <7412>
+# tag: docutils-0.9.1
+do fix_du_tag_dir <7453>
+# tag: docutils-0.10
+do fix_du_tag_dir <7565>
+# tag: docutils-0.11
+do fix_du_tag_dir <7695>
+# tag: docutils-0.12
+do fix_du_tag_dir <7759>
+# tag: docutils-0.13.1
+do fix_du_tag_dir <7988>
+# tag: docutils-0.14.0a
+do fix_du_tag_dir <8078>
+# tag: docutils-0.14a0
+do fix_du_tag_dir <8082>
+# tag: docutils-0.14rc1
+do fix_du_tag_dir <8088>
+# tag: docutils-0.14rc2
+do fix_du_tag_dir <8137>
+# tag: docutils-0.14
+do fix_du_tag_dir <8150>
+# tag: docutils-0.15
+do fix_du_tag_dir <8268>
+# tag: docutils-0.16
+do fix_du_tag_dir <8454>
+# tag: docutils-0.17
+do fix_du_tag_dir <8655>
+# tag: docutils-0.17.1
+do fix_du_tag_dir <8708>
+# tag: docutils-0.18
+do fix_du_tag_dir <8866>
+# tag: docutils-0.18.1
+do fix_du_tag_dir <8901>
+# tag: docutils-0.19
+do fix_du_tag_dir <9104>
+# tag: docutils-0.20
+do fix_du_tag_dir <9375>
+# tag: docutils-0.20.1
+do fix_du_tag_dir <9389>
+# tag: docutils-0.21
+do fix_du_tag_dir <9622>
+# tag: docutils-0.21.1
+do fix_du_tag_dir <9634>
+# tag: docutils-0.21.2
+do fix_du_tag_dir <9650>
+
+define fix_prest_tag_dir {
+{0} remove deletes
+{0} path rename "^(.*)" "prest/\1" --force
+}
+
+# tag: prest-0.3.10
+do fix_prest_tag_dir <4328>
+# tag: prest-0.3.11
+do fix_prest_tag_dir <4584>
+
+# Fix commit attributions
+# This adds a git 'author', the committer stays the same.
+# Sorted by revision number, but grouped by author.
+# This is a best-effort attempt based on going through
+# https://sourceforge.net/p/docutils/patches/
+# and the commit history.
+
+<7679> attribution append "Takayuki SHIMIZUKAWA" [email protected]
+<7681> attribution append "Takayuki SHIMIZUKAWA" [email protected]
+
+<7689> attribution append "Benoît Allard" [email protected]
+<8243> attribution append "Benoît Allard" [email protected]
+
+<7784> attribution append "Brecht Machiels" [email protected]
+<7785> attribution append "Brecht Machiels" [email protected]
+<7960> attribution append "Brecht Machiels" [email protected]
+<8183> attribution append "Brecht Machiels" [email protected]
+<8184> attribution append "Brecht Machiels" [email protected]
+
+<7952> attribution append "Takeshi KOMIYA" [email protected]
+<8039> attribution append "Takeshi KOMIYA" [email protected]
+<8219> attribution append "Takeshi KOMIYA" [email protected]
+<8246> attribution append "Takeshi KOMIYA" [email protected]
+<8501> attribution append "Takeshi KOMIYA" [email protected]
+<8251> attribution append "Takeshi KOMIYA" [email protected]
+<8522> attribution append "Takeshi KOMIYA" [email protected]
+
+<7953> attribution append "Dmitry Shachnev" [email protected]
+<8282> attribution append "Dmitry Shachnev" [email protected]
+<8662> attribution append "Dmitry Shachnev" [email protected]
+<9365> attribution append "Dmitry Shachnev" [email protected]
+<9430> attribution append "Dmitry Shachnev" [email protected]
+
+<7967> attribution append "Shahin Azad" [email protected]
+<8600> attribution append "Shahin Azad" [email protected]
+
+<8228> attribution append "Hugo van Kemenade" [email protected]
+<8241> attribution append "Hugo van Kemenade" [email protected]
+<9198> attribution append "Hugo van Kemenade" [email protected]
+
+/Signed-off-by: Stephen Finucane <[email protected]>/c attribution append "Stephen Finucane" [email protected]
+<8333> attribution append "Stephen Finucane" [email protected]
+<8364> attribution append "Stephen Finucane" [email protected]
+<8366> attribution append "Stephen Finucane" [email protected]
+<8368> attribution append "Stephen Finucane" [email protected]
+<8371> attribution append "Stephen Finucane" [email protected]
+<8374> attribution append "Stephen Finucane" [email protected]
+<8375> attribution append "Stephen Finucane" [email protected]
+
+<8497> attribution append "Michał Górny" [email protected]
+
+<8569> attribution append "John T. Wodder II" [email protected]
+<8570> attribution append "John T. Wodder II" [email protected]
+<8571> attribution append "John T. Wodder II" [email protected]
+<8577> attribution append "John T. Wodder II" [email protected]
+<8626> attribution append "John T. Wodder II" [email protected]
+<8769> attribution append "John T. Wodder II" [email protected]
+
+<8604> attribution append "Casper Meijn" [email protected]
+
+<8823> attribution append "Clément Pit-Claudel" [email protected]
+<8827> attribution append "Clément Pit-Claudel" [email protected]
+<9176> attribution append "Clément Pit-Claudel" [email protected]
+<9176> filter regex /Clément/Clément/c
+
+<8934> attribution append "Adam Turner" [email protected]
+<8935> attribution append "Adam Turner" [email protected]
+<8950> attribution append "Adam Turner" [email protected]
+<8954> attribution append "Adam Turner" [email protected]
+<8955> attribution append "Adam Turner" [email protected]
+<8956> attribution append "Adam Turner" [email protected]
+<8959> attribution append "Adam Turner" [email protected]
+<8960> attribution append "Adam Turner" [email protected]
+<8968> attribution append "Adam Turner" [email protected]
+<8969> attribution append "Adam Turner" [email protected]
+<8970> attribution append "Adam Turner" [email protected]
+<8971> attribution append "Adam Turner" [email protected]
+<8972> attribution append "Adam Turner" [email protected]
+<8973> attribution append "Adam Turner" [email protected]
+<8976> attribution append "Adam Turner" [email protected]
+<8980> attribution append "Adam Turner" [email protected]
+<8984> attribution append "Adam Turner" [email protected]
+<8985> attribution append "Adam Turner" [email protected]
+<8987> attribution append "Adam Turner" [email protected]
+<9013> attribution append "Adam Turner" [email protected]
+<9072> attribution append "Adam Turner" [email protected]
+<9270> attribution append "Adam Turner" [email protected]
+<9448> attribution append "Adam Turner" [email protected]
+
+<9126> attribution append "Matthias C. M. Troffaes" [email protected]
+
+<9216> attribution append "Ximin Luo" [email protected]
+
+<9475> attribution append "Hood Chatham" [email protected]
+
+<9479> attribution append "Chris Sewell" [email protected]
+
# Ensure every commit message ends with a single new line
=C append "\n" --rstrip
-=C append "\n"
-# Export entire stream to git
+# Export entire stream to git-fast-import
write >docutils_tmp.fi
# Export to early (pre-CVS merge)
+# Up to and including r16
# <2002-04-18T02:50:09Z#1> more editing progress (last commit of docutils-early)
-=C & 1..<2002-04-18T02:50:09Z#1> write >docutils_early.fi
+=C & 1..<16> write >docutils_early.fi
#Export to late (post-CVS merge)
-=C & 1..<2002-04-18T02:50:09Z#1> delete
+# r17 and later (identical to @suc(<16>), all commits after r16)
+=C & 1..<16> delete commit --quiet
write >docutils_late.fi
+# Timing statistics
+timing
+
exit
Modified: trunk/sandbox/aa-turner/git_conversion/docutils.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/docutils.lift 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/docutils.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,3 +1,15 @@
+# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
+set canonicalize
+# Enable fancy progress messages even when not on a tty.
+set progress
+
# Set up logging
logfile conversion.docutils.log
@@ -9,60 +21,93 @@
# Create macros
define releasetag {
-tag create {0} @min(/\nSubversion-Revision-ID: {1}\n/)
-<{0}> setfield comment "Docutils {0}"
+tag create "v{0}" {1}
+<v{0}> setfield comment "Docutils {0}"
}
-# Move infrastructure, enhancement-proposals, web
+# Move infrastructure and enhancement-proposals
path rename "sandbox/infrastructure/(.*)" "docutils/infrastructure/\1" --force
-path rename "sandbox/enhancement-proposals/(.*)" "docutils/docs/enhancement-proposals/\1" --force
-path rename "^web(.*)" "docutils/docs/web\1" --force
+path rename "sandbox/davidg/infrastructure/(.*)" "docutils/infrastructure/\1" --force
+path rename "sandbox/enhancement-proposals/(.*)" "docutils/docs/dev/enhancement-proposals/\1" --force
-# Delete everything else
-expunge --notagify /^sandbox\/.*$/
-expunge --notagify /^prest\/.*$/
-expunge --notagify /^.pre-commit-config.yaml\/.*$/
-expunge --notagify /^.flake8\/.*$/
+# Delete everything else in the root
+expunge --notagify /^(prest|sandbox|web|web_docstring|web_structuredtext)\/.*$/
+expunge --notagify /^tox.ini$/
+expunge --notagify /^\.(flake8|gitattributes|gitignore|pre-commit-config.yaml)$/
# Move up a directory
-path rename "docutils/(.*)" "\1" --force
+path rename "^docutils/(.*)" "\1" --force
+# Remove now-empty commits
+=Z setfield comment "\n"
+=Z squash --empty-only --delete
+
# Create new tags
-do releasetag 0.1.0 30
-do releasetag 0.2.0 433
-do releasetag 0.3.0 1504
-do releasetag 0.3.1 1641
-# 0.3.2 -- never released
-do releasetag 0.3.3 2067
+# Commits matches with contents of archives from
+# https://sourceforge.net/projects/docutils/files
+# and https://pypi.org/project/docutils/#history
+# 0.3.1, 0.3.2, and 0.3.3 had no archive made,
+# but we tag them here as there are over 1,000
+# commits between 0.3.0 and 0.3.5.
+# 0.3.4, 0.3.6, and 0.3.8 were never released
+# because of failures in the release process.
+# Likewise, 0.13.0 was not actually released.
+do releasetag 0.1.0 <30>
+do releasetag 0.2.0 <433>
+do releasetag 0.3.0 <1504>
+do releasetag 0.3.1 <1641>
+do releasetag 0.3.2 <1944>
+do releasetag 0.3.3 <2067>
# 0.3.4 -- never released
-do releasetag 0.3.5 2512
+do releasetag 0.3.5 <2512>
# 0.3.6 -- never released
-do releasetag 0.3.7 2900
+do releasetag 0.3.7 <2900>
# 0.3.8 -- never released
-do releasetag 0.3.9 3376
-do releasetag 0.4.0 4262
-do releasetag 0.5.0 5578
-do releasetag 0.6.0 6167
-do releasetag 0.7.0 6360
-do releasetag 0.8.0 7087
-do releasetag 0.8.1 7107
-do releasetag 0.9.0 7410
-do releasetag 0.9.1 7452
-do releasetag 0.10.0 7563
-do releasetag 0.11.0 7696
-do releasetag 0.12.0 7760
+do releasetag 0.3.9 <3376>
+do releasetag 0.4.0 <4262>
+do releasetag 0.5.0 <5578>
+do releasetag 0.6.0 <6167>
+do releasetag 0.7.0 <6360>
+do releasetag 0.8.0 <7087>
+do releasetag 0.8.1 <7107>
+do releasetag 0.9.0 <7410>
+do releasetag 0.9.1 <7452>
+do releasetag 0.10.0 <7563>
+do releasetag 0.11.0 <7696>
+do releasetag 0.12.0 <7760>
# 0.13.0 -- never released
-do releasetag 0.13.1 7985
-do releasetag 0.14.0 8148
-do releasetag 0.15.0 8272
-do releasetag 0.15.1 8298
-do releasetag 0.15.2 8304
-do releasetag 0.16.0 8453
-do releasetag 0.17.0 8653
-do releasetag 0.17.1 8705
-do releasetag 0.18.0 8865
-do releasetag 0.18.1 8900
-do releasetag 0.19.0 9103
+do releasetag 0.13.1 <7985>
+# do releasetag 0.14.0rc1 <8087>
+# do releasetag 0.14.0rc2 <8135>
+do releasetag 0.14.0 <8148>
+do releasetag 0.15.0 <8272>
+do releasetag 0.15.1 <8298>
+do releasetag 0.15.2 <8304>
+# do releasetag 0.16.0rc1 <8442>
+do releasetag 0.16.0 <8453>
+# do releasetag 0.17.0b1 <8615>
+do releasetag 0.17.0 <8653>
+do releasetag 0.17.1 <8705>
+# do releasetag 0.18.0b1 <8845>
+do releasetag 0.18.0 <8865>
+# do releasetag 0.18.1b1 <8893>
+do releasetag 0.18.1 <8900>
+# do releasetag 0.19.0b1 <9085>
+do releasetag 0.19.0 <9103>
+# do releasetag 0.20.0rc1 <9372>
+do releasetag 0.20.0 <9374>
+do releasetag 0.20.1 <9388>
+# do releasetag 0.21.0rc1 <9601>
+do releasetag 0.21.0 <9621>
+do releasetag 0.21.1 <9632>
+do releasetag 0.21.2 <9649>
-# Remove rel-0.15 branch (must be done after reposurgeon)
-branch delete heads/rel-0.15
+branch delete :refs/tags/docutils-:
+
+# Export to converted-docutils.fi
+write >converted-docutils.fi
+
+# Timing statistics
+timing
+
+exit
Modified: trunk/sandbox/aa-turner/git_conversion/docutils.map
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/docutils.map 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/docutils.map 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,5 +1,6 @@
# Author map for docutils
no-author = No Author <[email protected]>
+aa-turner =
aahz =
agurtovoy =
aisaac =
Modified: trunk/sandbox/aa-turner/git_conversion/post-convert.sh
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/post-convert.sh 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/post-convert.sh 2024-08-07 01:41:55 UTC (rev 9856)
@@ -3,8 +3,9 @@
cd "$1"
-# Ignore filemode changes
-git config core.filemode false
+# Reinitialise repository. We do this for sanity, as git might expect
+# things that reposurgeon doesn't provide.
+git init
# Run a garbage-collect on the generated git repository. Import doesn't.
# This repack call is the active part of gc --aggressive. This call is
@@ -13,12 +14,18 @@
# Clean repo
git prune
+git rm -rf .
git clean -fxd
git reset HEAD --hard
# Check integrity
-git fsck --full --dangling --unreachable --strict
+git fsck --full --strict --unreachable --dangling --lost-found
# Enable commit graph
git config core.commitGraph true
-git show-ref -s | git commit-graph write --stdin-commits
+git config fetch.writeCommitGraph true
+git commit-graph write --append --reachable --changed-paths
+git commit-graph verify
+
+# End by re-reinitialising repository. Why not!
+git init
Modified: trunk/sandbox/aa-turner/git_conversion/prest.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/prest.lift 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/prest.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,3 +1,15 @@
+# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
+set canonicalize
+# Enable fancy progress messages even when not on a tty.
+set progress
+
# Set up logging
logfile conversion.prest.log
@@ -9,8 +21,8 @@
# Create macros
define releasetag {
-tag create {0} @min(=C&/\nSubversion-Revision-ID: {1}\n/)
-<{0}> setfield comment "Docutils {0}"
+tag create "v{0}" {1}
+<v{0}> setfield comment "prest {0}"
}
# Delete unneeded branches
@@ -18,10 +30,10 @@
branch delete refs/heads/subdocs
branch delete refs/heads/lossless-rst-writer
branch delete refs/heads/nesting
-branch delete heads/rel-0.15
+branch delete refs/heads/rel-0.15
# Drop the "Remove 'prest'" commit
-/Remove 'prest'/ delete
+<9003> delete commit --quiet
# Delete everything else
expunge --notagify --not /^prest\/.*$/
@@ -29,40 +41,61 @@
# Move up a directory
path rename "prest/(.*)" "\1" --force
+# Remove now-empty merges
+=Z & <5623> unmerge
+=Z & <4667> unmerge
+=Z & <3892-2> unmerge
+
+# Remove now-empty commits
+=Z setfield comment "\n"
+=Z squash --empty-only --delete
+
# Create new tags
-do releasetag 0.3.10 4327
-do releasetag 0.3.11 4580
+# Release archives found at https://metacpan.org/author/NODINE/releases
+do releasetag 0.3.10 <4327>
+do releasetag 0.3.11 <4583>
# 0.3.12 -- never released
-do releasetag 0.3.13 4635
-do releasetag 0.3.14 4648
-do releasetag 0.3.15 4663
-do releasetag 0.3.16 4666
+do releasetag 0.3.13 <4635>
+do releasetag 0.3.14 <4648>
+do releasetag 0.3.15 <4663>
+do releasetag 0.3.16 <4666>
# 0.3.17 -- never released
-do releasetag 0.3.18 4736
-do releasetag 0.3.19 4799
-do releasetag 0.3.20 4876
-do releasetag 0.3.21 4889
-do releasetag 0.3.22 4910
-do releasetag 0.3.23 4932
-do releasetag 0.3.24 4934
-do releasetag 0.3.25 4949
-do releasetag 0.3.26 5058
-do releasetag 0.3.27 5062
-do releasetag 0.3.28 5063
-do releasetag 0.3.29 5066
-do releasetag 0.3.30 5071
-do releasetag 0.3.31 5299
-do releasetag 0.3.32 5363
-do releasetag 0.3.33 5378
-do releasetag 0.3.34 5438
-do releasetag 0.3.35 5446
-do releasetag 0.3.36 5453
-do releasetag 0.3.37 5486
-do releasetag 0.3.38 5781
-do releasetag 0.3.39 5799
-do releasetag 0.3.40 5810
-do releasetag 0.3.41 6251
-do releasetag 0.3.42 6291
-do releasetag 0.3.43 6302
-do releasetag 0.3.44 6440
-do releasetag 0.3.45 6498
\ No newline at end of file
+do releasetag 0.3.18 <4736>
+do releasetag 0.3.19 <4799>
+do releasetag 0.3.20 <4876>
+do releasetag 0.3.21 <4889>
+do releasetag 0.3.22 <4910>
+do releasetag 0.3.23 <4932>
+do releasetag 0.3.24 <4934>
+do releasetag 0.3.25 <4949>
+do releasetag 0.3.26 <5058>
+do releasetag 0.3.27 <5062>
+do releasetag 0.3.28 <5063>
+do releasetag 0.3.29 <5066>
+do releasetag 0.3.30 <5071>
+do releasetag 0.3.31 <5299>
+do releasetag 0.3.32 <5363>
+do releasetag 0.3.33 <5378>
+do releasetag 0.3.34 <5438>
+do releasetag 0.3.35 <5446>
+do releasetag 0.3.36 <5453>
+do releasetag 0.3.37 <5486>
+do releasetag 0.3.38 <5781>
+do releasetag 0.3.39 <5799>
+do releasetag 0.3.40 <5810>
+do releasetag 0.3.41 <6251>
+do releasetag 0.3.42 <6291>
+do releasetag 0.3.43 <6302>
+do releasetag 0.3.44 <6440>
+do releasetag 0.3.45 <6498>
+
+# Delete auto-generated lightweight tags
+branch delete :refs/tags/prest-:
+
+# Export to converted-prest.fi
+write >converted-prest.fi
+
+# Timing statistics
+timing
+
+exit
Modified: trunk/sandbox/aa-turner/git_conversion/sandbox.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/sandbox.lift 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/sandbox.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,3 +1,15 @@
+# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
+set canonicalize
+# Enable fancy progress messages even when not on a tty.
+set progress
+
# Set up logging
logfile conversion.sandbox.log
@@ -12,7 +24,7 @@
branch delete refs/heads/subdocs
branch delete refs/heads/lossless-rst-writer
branch delete refs/heads/nesting
-branch delete heads/rel-0.15
+branch delete refs/heads/rel-0.15
# Delete everything else
expunge --notagify --not /^sandbox\/.*$/
@@ -19,3 +31,24 @@
# Move up a directory
path rename "sandbox/(.*)" "\1" --force
+
+# Remove now-empty merges
+=Z & <5623> unmerge
+=Z & <5618> unmerge
+=Z & <5015-2> unmerge
+=Z & <4667> unmerge
+=Z & <4156> unmerge
+=Z & <3581> unmerge
+=Z & <3129> unmerge
+
+# Remove now-empty commits (except "Combine into Docutils")
+=Z & ~<2002-04-20T02:00:00Z> setfield comment "\n"
+=Z & ~<2002-04-20T02:00:00Z> squash --empty-only --delete
+
+# Export to converted-docutils.fi
+write >converted-sandbox.fi
+
+# Timing statistics
+timing
+
+exit
Modified: trunk/sandbox/aa-turner/git_conversion/web.lift
===================================================================
--- trunk/sandbox/aa-turner/git_conversion/web.lift 2024-08-06 08:02:23 UTC (rev 9855)
+++ trunk/sandbox/aa-turner/git_conversion/web.lift 2024-08-07 01:41:55 UTC (rev 9856)
@@ -1,3 +1,15 @@
+# Set up options
+# http://www.catb.org/~esr/reposurgeon/repository-editing.html#control-options
+
+set echo
+# We expect version 4.38
+version 4.38
+# Canonicalise comments/messages by normalising line endings to LF,
+# stripping leading & trailing whitespace, and appending a new line.
+set canonicalize
+# Enable fancy progress messages even when not on a tty.
+set progress
+
# Set up logging
logfile conversion.web.log
@@ -12,7 +24,7 @@
branch delete refs/heads/subdocs
branch delete refs/heads/lossless-rst-writer
branch delete refs/heads/nesting
-branch delete heads/rel-0.15
+branch delete refs/heads/rel-0.15
# Delete everything else
expunge --notagify --not /^web.*$/
@@ -21,3 +33,24 @@
path rename "web_docstring/(.*)" "\1" --force
path rename "web_structuredtext/(.*)" "\1" --force
path rename "web/(.*)" "\1" --force
+
+# Remove now-empty merges
+=Z & <5623> unmerge
+=Z & <4667> unmerge
+=Z & <4156> unmerge
+=Z & <3892-2> unmerge
+=Z & <3581> unmerge
+=Z & <3129> unmerge
+=Z & <2001-09-01T16:29:12Z> unmerge
+
+# Remove now-empty commits (except "Combine into Docutils")
+=Z & ~<2002-04-20T02:00:00Z> setfield comment "\n"
+=Z & ~<2002-04-20T02:00:00Z> squash --empty-only --delete
+
+# Export to converted-docutils.fi
+write >converted-web.fi
+
+# Timing statistics
+timing
+
+exit
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
_______________________________________________
Docutils-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/docutils-checkins