Due to some maintenance issues, this service has been switched in read-only mode, you can find more information about the why

and how to migrate your plugin documentation in this blogpost

Skip to end of metadata
Go to start of metadata

If you find yourself needing to look for a certain pattern among all sources files in Jenkins and its plugins - anything in https://github.com/jenkinsci - try cloning http://git.jenkins-ci.org/all.git and then running this handy one-liner in it (replace the "basic"-syntax regexp with whatever you need, or use -E for extended regexp):

git branch -a | fgrep -v '*' | xargs git grep 'SomeClass\.staticMethod' | perl -n -e 'print "$repo/$fname: $text\n" if ($repo, $fname, $text) = /^remotes\/origin\/(.+)\/master:([^:]+):(?:[ \t]*)(.+)$/'

(This greps files as of the tip of the master branch only. Checking historical versions is much slower.)

To limit the search to particular paths:

(git branch -a | fgrep -v '*'; echo -- pom.xml) | xargs git grep 'credentials' | perl -n -e 'print "$repo/$fname: $text\n" if ($repo, $fname, $text) = /^remotes\/origin\/(.+)\/master:([^:]+):(?:[ \t]*)(.+)$/'

Another useful trick is to collect the full text of all source files matching the pattern, so you evaluate matches in context:

git show `git branch -a | fgrep /master | xargs git grep -l 'SomeClass\.staticMethod'`

Similarly, to grep file names and not from file contents:

for b in $(git branch -a | fgrep /master)
do
  git ls-tree -r --name-only $b | grep some/path/name | sed -e "s|^|$b:|g"
done

To show hyperlinks to GitHub sources, change the Perl print statement to:

print "https://github.com/jenkinsci/$repo/blob/master/$fname\n"

http://ci.jenkins-ci.org/view/Infrastructure/job/infra_backend-merge-all-repo/ updates this repo weekly.

You can also:

git clone git@github.com:jenkinsci/backend-merge-all-repo.git
./backend-merge-all-repo/clone.groovy

to clone all repositories separately, then use regular shell tools to search them:

find */src/main/java -type f -name \*.java -exec fgrep -q 'SomeClass.staticMethod' {} \; -print

But the easiest method is to skip checkouts entirely and use GitHub:

https://github.com/search?type=Code&q=user%3Ajenkinsci+SomeClass.staticMethod

Or right-click your browser search bar, add a new provider with name github and URL pattern:

https://github.com/search?ref=simplesearch&type=Code&q=user%3Ajenkinsci+%s

Now just: Ctrl-K github TAB SomeClass.staticMethod ENTER

  • No labels