GCC C++ Modules TS Branch in Git from the original Subversion service

Whereas

GCC for Modules TS is mastered in Subversion. It would be fun to have it copied and available in Git. Because that’s what the cool kids use nowadays.

Specimen

  • svn://gcc.gnu.org/svn/gcc/branches/c++-modules

References

Recipe

cd /…/vault/git/svn/org.gnu.gcc
mkdir c++-modules
svnadmin create c++-modules
cat > c++-modules/hooks/pre-revprop-change <<EOF
#!/bin/sh
exit 0;
EOF
chmod +x c++-modules/hooks/pre-revprop-change

svnsync init file:///…/vault/git/svn/org.gnu.gcc/c++-modules svn://gcc.gnu.org/svn/gcc/branches/c++-modules
# one line of output
# …quick…

svnsync sync file:///…/vault/git/svn/org.gnu.gcc/c++-modules
# …lots and lots of output…
# …long time passing…
# …think "five days" as 1 rev/sec is common and you need r25500…

cd /…/vault/git/clones
git svn clone file:///…/vault/git/svn/org.gnu.gcc/c++-modules -T trunk -b branches -t tags

Also, -s is the same as -T trunk -b branches -t tags

Previously,

gcc’s ‘#pragma once’ accounts for file timestamp and contents but not name

Nota Bene: gcc’s #pragma once takes into account the file timestamp and the file contents but does not take into account the file name or position in the tree. This is unfortunate.

Folklore

This can occur…

  • On very fast systems & filesystems such that file timestamps become “the same” (having the same per-second granularity).
  • [unusual] When files are copied OR
  • When files have substantially the same contents but because of their location in the build tree or searchpath, make visible different ancillary files.

Evidence

  • 52566#include with #pragma once and files’ contents is the same