You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/02/01 19:01:06 UTC

[08/50] [abbrv] brooklyn-client git commit: fix tidy-up of new repo, faster filtering, and refactor new_repo code

fix tidy-up of new repo, faster filtering, and refactor new_repo code

record the different strategies for filtering.
also allowing a cheat mode using fixed depth for quicker eval.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-client/commit/4904ee06
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-client/tree/4904ee06
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-client/diff/4904ee06

Branch: refs/heads/master
Commit: 4904ee0666c83cbb0e75b64d6a2b415d225eb0f9
Parents: fa27479
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Dec 16 09:04:19 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Dec 16 11:53:04 2015 +0000

----------------------------------------------------------------------
 4-make-new-repos.sh | 68 ++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 57 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/4904ee06/4-make-new-repos.sh
----------------------------------------------------------------------
diff --git a/4-make-new-repos.sh b/4-make-new-repos.sh
index 9fb63cb..ccfca3e 100755
--- a/4-make-new-repos.sh
+++ b/4-make-new-repos.sh
@@ -11,12 +11,52 @@ set -e
 function new_repo() {
     repodir=new-repos/${REPO_PREFIX}$1
     git clone incubator-brooklyn $repodir
+    # for quick tests:
+#    git clone --depth 10 file://`pwd`/incubator-brooklyn $repodir && ( cd $repodir && git fetch --depth 10 )
     ( cd $repodir &&
         for branch in ${branches}; do git branch --track ${branch} origin/${branch}; done &&
         git remote rm origin &&
         git remote add origin https://github.com/${REPO_ORG}/${REPO_PREFIX}$1.git )
 }
-function cleanup() {
+function filter_repo() {
+  # testing which is fastest
+#  filter_repo_removing_explicit $1 $2
+  filter_repo_update_index_explicit $1 $2
+}
+function filter_repo_update_index_explicit() {
+  # update-index is much faster than git-rm and simpler without the pre-processing
+  ( cd new-repos/${REPO_PREFIX}$1 && \
+    git filter-branch --index-filter \
+      "git ls-files | comm -23 - ${basedir}/$2 | git update-index --force-remove --stdin" \
+      --tag-name-filter cat --prune-empty master ${branches} )
+}
+function filter_repo_rm_all_then_add() {
+  # :( this doesn't work, as we don't have content to add, and reset doesnt work also
+  ( cd new-repos/${REPO_PREFIX}$1 && \
+    git filter-branch --index-filter "git ls-files > /tmp/TMP-files-to-add ; git rm -q -r --cached --ignore-unmatch * ; comm -12 /tmp/TMP-files-to-add ${basedir}/$2 | tr '\n' '\0' | xargs -0 -n 1000 git reset" \
+      --tag-name-filter cat --prune-empty master ${branches} )
+}
+function filter_repo_removing_explicit() {
+  # use -0 and tr so files with spaces are passed as single words
+  # batch by 1000 to avoid xargs insufficient space error
+  # don't need to do -r on rm since it's explicit files (but that doesn't speed it up much)
+  ( cd new-repos/${REPO_PREFIX}$1 && \
+    git filter-branch --index-filter "git ls-files | comm -23 - ${basedir}/$2 | tr '\n' '\0' | xargs -0 -n 1000 git rm -q --cached --ignore-unmatch" \
+      --tag-name-filter cat --prune-empty master ${branches} )
+}
+
+function filter_repo_update_ruby_whitelist() {
+  # this is the original technique, using ruby -- allows path prefixes
+  # but we now use explicit file lists for which it becomes inefficient
+  # (also note: the common-whitelist is in the gen list, and it will break if xargs is too long (but those are easily fixed))
+  ( cd new-repos/${REPO_PREFIX}$1 && \
+    git filter-branch --index-filter \
+      "git ls-files | ${basedir}/filter_whitelist.rb ${basedir}/common-whitelist.txt ${basedir}/$2 | xargs -0 git rm -q -r --cached --ignore-unmatch" \
+      --tag-name-filter cat --prune-empty master ${branches} )
+}
+
+
+function cleanup_repo() {
     ( cd new-repos/${REPO_PREFIX}$1 &&
         git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d &&
         git filter-branch --tag-name-filter cat --commit-filter ${basedir}'/remove-pointless-commit.rb "$@"' master ${branches} &&
@@ -24,7 +64,21 @@ function cleanup() {
         git reflog expire --expire=now --all &&
         git gc --prune=now )
 }
+function commit_repo() {
+  pushd new-repos/${REPO_PREFIX}$1
+  git rm --ignore-unmatch .gitattributes .gitignore README.md NOTICE LICENSE 
+  git mv $1/{*,.??*} ./
+  git add -A
+  git commit -m 'move subdir from incubator up a level as it is promoted to its own repo (first non-incubator commit!)'
+  popd
+}
 
+function do_repo_w_whitelist() {
+  new_repo $1
+  filter_repo $1 $2
+  cleanup_repo $1
+  commit_repo $1
+}
 
 # clean up the history, globally
 
@@ -33,16 +87,8 @@ rm -rf new-repos
 mkdir new-repos
 
 for x in $PROJS ; do
-  new_repo brooklyn-$x
-  # use -0 and tr so files with spaces are passed as single words
-  # batch by 1000 to avoid xargs insufficient space error
-  ( cd new-repos/${REPO_PREFIX}brooklyn-$x && git filter-branch --index-filter "git ls-files | comm -23 - ${basedir}/$x-whitelist.full.gen.txt | tr '\n' '\0' | xargs -0 -n 1000 git rm -q -r --cached --ignore-unmatch" --tag-name-filter cat --prune-empty master ${branches} )
-  cleanup brooklyn-$x
-  git rm .gitattributes .gitignore README.md NOTICE LICENSE
-  git mv brooklyn-$x/{*,.??*} ./
+  do_repo_w_whitelist brooklyn-$x $x-whitelist.full.gen.txt
 done
 
-new_repo brooklyn
-( cd new-repos/${REPO_PREFIX}brooklyn && git filter-branch --index-filter "git ls-files | comm -23 - ${basedir}/brooklyn-uber-repo-whitelist.gen.txt | tr '\n' '\0' | xargs -0 -n 1000 git rm -q -r --cached --ignore-unmatch" --tag-name-filter cat --prune-empty master ${branches} )
-cleanup brooklyn
+do_repo_w_whitelist brooklyn brooklyn-uber-repo-whitelist.gen.txt