49 Commits

Author SHA1 Message Date
Dave Borowitz
4a74548c22 Document gjf and add a script to standardize/streamline setup
google-java-format is not uniformly available in package management
systems across OSes. More importantly, we want to make sure that all
contributors are using a standardized version, to avoid unnecessary
changes due to slight differences between versions.

While we're in the dev documentation, link to the Google Java Style
Guide, and remove some wording that is clearly redundant with the style
guide.

Change-Id: Ib14dab2e692339f836083fad08a7a435a2f24470
2017-02-07 12:38:37 -05:00
Dave Borowitz
31718be080 Sort .gitignore
Change-Id: I251a150323056aa414fdfa989dbab7a04d2219f3
2017-02-07 09:00:23 -05:00
David Pursehouse
1cd287ee77 Add .buckd/ back to .gitignore
Change-Id: I8e435f4ec965966ebfe3e15141d203d8c4e689df
2017-01-28 21:39:01 +09:00
Edwin Kempin
bb80502af7 Git ignore '/buck-out'
We still use Buck for the stable branches and when you switch from a
stable branch to the master branch it's annoying that '/buck-out' pops
up as untracked folder.

Change-Id: I2be21286706af6baa07e947cdef3a14666ce7cf2
Signed-off-by: Edwin Kempin <ekempin@google.com>
2017-01-27 08:38:59 +01:00
David Ostrovsky
fdbfcad77d Remove Buck based build
Bug: Issue 5302
Change-Id: I6e860446ef30ff0ad1c7c49fc0e39d39d921820b
2017-01-23 12:44:58 +00:00
David Ostrovsky
7965fd2c9b Ignore infer output folder
Infer [1] is a static code checker.

[1] http://fbinfer.com

Bug: Issue 5198
Change-Id: I51ac941b85b18c63ead61a2a3f00c5d58a9c2212
2016-12-25 09:41:21 +01:00
David Ostrovsky
c69f360714 Bazel: Generate Eclipse classpath
To guess what build system is used, we create now .primary_build_tool
file in the root of the project during the eclipse classpath generation.

Change the working directory for GWT SDM session to be .gwt_work_dir.
The reason for that Bazel doesn't allow to write to bazel-out.

Change-Id: I984068350244ee9d66807e4bc8c6779b34a26bab
2016-11-15 10:12:44 -08:00
Patrick Hiesel
1d440017b7 Ignore .metadata folder managed by Eclipse
Change-Id: I2a6abee66082e26e819d2fb4f07f84604fedd7df
2016-10-04 12:06:17 +02:00
David Ostrovsky
b81b4f75ae Implement Bazel build
To run the tests:

  bazel test //...

To build the Gerrit plugin API, run:

  bazel build gerrit-plugin-api:plugin-api_deploy.jar

To build the Gerrit extension API, run:

  bazel build gerrit-extension-api:extension-api_deploy.jar

TODOs:

Licenses
Reduce visibility (all public for now)
Generate HTML Documentation
Core plugins
gerrit_plugin() rule to build plugins in tree and standalone modes
GWT UI (only gwt_module() skylark rule is provided, no gwt_binary())
PolyGerrit UI
WAR
Publish artifacts to Maven Central
Ask Bazel team to add Gerrit to their CI on ci.bazel.io

Contributed-By: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I9a86e670882a44a5c966579cdeb8ed79b1590de3
2016-06-14 21:12:02 +02:00
Patrick Hiesel
80141a6571 Add .eml files to gitignore
eml files are generated by IntelliJ as a substitute for .iml files if
the workspace is organized in .classpath files. These should not be
pushed.

Change-Id: If47838a2a58b6d76cd6c68461d54929b0a732234
2016-05-12 00:57:44 +00:00
Patrick Hiesel
b156a5a19e Added tmp files to gitignore
I've added common editor tmp files (*~) to the gitignore as
these should not be pushed.

Change-Id: I88a7bb0b42e4ccbe5218d3d2a59aa18081ab75d6
2016-04-28 17:16:06 +02:00
Han-Wen Nienhuys
c19a34577b Ignore all *.iml (IntelliJ module files).
Change-Id: Ib17a50fa7c089db88e5cb92b905efbb3aafbb192
2016-02-09 16:11:01 +01:00
David Ostrovsky
58cb4b4881 Update Buck to newest version
The new Buck version fixed annoying stdout spamming bug on unit test
failures: [1]. Now we can revert our monkey patching hack to prevent
that.

Since [2] Buck interferes with files in buck-out directory: [3]. Switch
to using eclipse-out directory as Eclipse output directory instead. For
this change it's necessary to clean up buck-out directory, otherwise
`buck test` would fail.

This version also fixed "Python client lost connection" bug: [4].

This reverts commit 94e93aaad22e67b5956627cff1a9cb84d03a29ec.

[1] https://github.com/facebook/buck/issues/505
[2] 35cb495b57
[3] https://github.com/facebook/buck/issues/527
[4] https://github.com/facebook/buck/issues/534

Change-Id: I4cd1a99ce9d0615713c235d873e6cdd61b1854bb
2015-12-02 14:07:12 +00:00
Andrew Bonventre
43b5eea886 Add .DS_Store to .gitignore
There is no reason to track .DS_Store files here: it's a metadata file
used by the Mac finder to hold info like where icons are located.  Add
it to .gitignore to avoid cluttering "git status" output.

Change-Id: I2c59228e48ed8d5ef125d8a694ca05d20b622723
2015-11-05 11:06:52 -08:00
David Pursehouse
d426c572ff Revert "Add UNIT_TEST_GERRIT_SITE to .gitignore"
This reverts commit e01fe1a43a4add2a628465858dd14f208539b7b2.

Change-Id: Ic9b13fe4f48d4050052b2ebb29b00c01994b89ac
2015-04-27 14:49:03 +09:00
David Pursehouse
e01fe1a43a Add UNIT_TEST_GERRIT_SITE to .gitignore
Change-Id: I150aef9a0b88e8409923e18215f4e9f053816f65
2015-04-23 18:09:36 +09:00
David Pursehouse
5d3dfe2d63 Add bin folder to .gitignore
In Eclipse preferences under the Team -> Git -> Project section, if the
"Automatically ignore derived resources by adding them to .gitignore"
option is enabled (which is the default), Eclipse will automatically
add "/bin/" to the .gitignore file.

Update the .gitignore file with this change to prevent Eclipse from
causing unexpected modified files in the git status.

Change-Id: I0cce9dd40183ff93b01cd0b45c383607d48d1af1
2015-04-08 11:40:19 +09:00
Shawn Pearce
16570463ab Add buck build soyc to output GWT split point report
The GWT compiler can output a report (or "story of your compile"),
describing the size of the JavaScript and which source classes
contributed to the overall download size. This is useful for
optimizing code splits in Dispatcher, and generally understanding
the impact of linking code together.

Only the "Split Point Report" is created.
The "Compiler Metrics" are not output.

The report is very slow to create, so it is not done by default.

Change-Id: I6ce86d65ee5f3e4bdba573d1f777ccc59767341d
2015-01-15 04:40:28 +00:00
Dave Borowitz
08180de4de Support AutoValue
AutoValue[1] is a lightweight annotation-processor-based library for
implementing classes with simple, obvious value semantics.

Add support for AutoValue to build rules and Eclipse project
generation. Buck does not currently have an officially-supported
interface for specifying annotation processor dependencies[2], so we
have to take the slightly ugly approach of monkey-patching
java_library and java_test to add annotation processor arguments to
each rule that requires annotation processing; hopefully this ugliness
can be reduced in the future.

[1] https://github.com/google/auto/tree/master/value
[2] https://github.com/facebook/buck/issues/85

Change-Id: I8b49d6f9f25d61688b667d964848c6ce106ae4ec
2014-11-08 08:31:08 -08:00
David Pursehouse
be108a3530 Merge branch 'stable-2.9'
* stable-2.9:
  Bash: Deploy plugin archetypes to Maven Central
  Fix documentation of how to publish artifacts to Maven Central
  Buck: Deploy plugin artifacts to Maven Central

Conflicts:
	.gitignore

Change-Id: I72aca7e13b55fbbe34bbf00d799a8a05dc96a955
2014-05-27 09:58:38 +09:00
David Ostrovsky
520f29c16a Buck: Deploy plugin artifacts to Maven Central
Switch deploying Gerrit extension and plugin API from Google storage
bucket to Maven Central.

To simplify the troubleshooting new trace option was added to
underlying python script. When environment variable VERBOSE=1
is set, then the mvn command is printed to stderr:

  VERBOSE=1 buck build api_deploy_oss
Change-Id: I9ebe44ec8aca91aa6b5514f561209e7c50377927
2014-05-26 22:06:42 +02:00
Luca Milanesio
0afb3473ae Ignoring vi swap file
Change-Id: I36dc970f9c6e8906550afa512a3b130a5edf2c2f
2014-04-25 18:40:35 +01:00
Shawn Pearce
4e1a8bc63d Update Buck
Buck changed export_deps from a boolean to be exported_deps, a list of
dependencies that are to be added to deps and also exported.  This
allows libraries to have dependencies for implementation use only, but
not expose them to callers for linkage.

exported_deps aren't transparently transitive anymore.  This mostly
impacts the plugin-api:lib rule.

This is the first time Gerrit is using upstream Buck with no patches.

- Java memory settings for Buck can now be supplied in a project
  specific file using `.buckjavaargs` in the root directory.  The file
  replaces the `.buckrc` previously supported by Gerrit's fork.

- Temporary directories for java_application() invoked from genrule()
  is now supplied as part of the arguments using $TMP.  This removes
  one of the patches Gerrit had for Buck.

- Unit tests use the system temporary directory during testing.  This
  can be faster if the temporary directory is a tmpfs.  Unfortunately
  not all passing tests clean up after themselves, making it possible
  to exhaust system memory and swap with useless tmpfs contents.
  Using the system temporary directory for tests removes another patch
  Gerrit had on top of Buck.

Change-Id: I3a9fe4aab0a33a8673df727e618122027a742638
2013-11-29 10:50:59 -08:00
David Pursehouse
13f628c77a Add org.eclipse.ltk.core.refactoring.prefs to .gitignore
Change-Id: I4c8c2f76cefd7fbcb3f208cc39e33fc5b67e28bd
2013-07-11 18:02:25 +09:00
Edwin Kempin
c23f1d757b Add gwt-unitCache to .gitignore
Change-Id: I2a6ad669daab2a92bce6561795ec4cb61628e101
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
2013-06-14 10:15:25 +02:00
David Pursehouse
75b856954c Ignore .pyc files
Change-Id: I3d2223b1d9da06da24187e20f376557ece7c6f41
2013-06-03 15:25:49 +09:00
Shawn Pearce
9e4e243cfd Fix genantlr() to support buck caching
genrule() can only produce one output. This is critical to the way
buck caching works for build results. The solution I learned from
the Buck team is to have the genrule() produce a ZIP file containing
all of the outputs, and use a unique genrule() to extract each
output from the ZIP.

Developers can now opt-into the buck cache by writing a local
config file:

  cat >.buckconfig.local <<EOF
  [cache]
    mode = dir
    dir = buck-cache
  EOF

This can be very useful when switching commits around with GWT UI
code. If the UI code does not modify between commits there is no
rebuild time. If UI code does modify, rebuild time is reduced to
0 when switching back to a prior version you had previously built.

The cache needs local disk, so its not enabled by default.

Change-Id: If8f79637004fbc13ea37c419e5c9bb582a489ab5
2013-05-30 14:12:07 -07:00
Shawn Pearce
2c58882623 Upgrade buck to gerrit/410fcf34
Buck upstream now supports a daemon mode[1] which allows BUILD
files to be cached across invocations. This saves considerable
time on startup, especially for no-op incremental builds:

  no-op without buckd:  10.6s
  no-op with    buckd:   5.2s

However the current daemon implementation is insecure. Users
should only run it on dedicated machines where they trust all
other running processes.

Buck now requires Java 7. If it is missing the build will fail.

[1] http://facebook.github.io/buck/command/buckd.html
Change-Id: I55dec63e467f8f4db5a799296fb7f588ce4b2aa1
2013-05-30 13:56:50 +00:00
Shawn Pearce
f8ad4a49a5 Stop ignoring buck-cache, it moved to ~/.gerritcodereview/
Change-Id: I02a55c3e55d1e347e7fcadeba3ef60760c307464
2013-05-18 14:06:12 -07:00
David Pursehouse
fcf74f1e78 Add org.eclipse.m2e.core.prefs in .gitignore
Change-Id: Ia83ad27887123d654160094a15456e6543263376
2013-05-18 22:39:49 +09:00
David Pursehouse
0ef585e6cf Add gerrit-package-plugins folder to .gitignore
This folder appears as an untracked item after building the
verify target in maven.

Change-Id: Iae15a649c3acfff577ffd3edae171e6e84060e74
2013-05-13 16:53:12 +09:00
Shawn Pearce
fd6bb9f6a5 Build with Buck
Implement a new build system using Buck[1], Facebook's
open source clone of Google's internal build system.

  Pros:
  - Concise build language
  - Test and build output is concise
  - Test failures and stack traces show on terminal
  - Reliable incrementals; clean is unnecessary
  - Extensible with simple blocks of Python
  - Fast
      buck: clean: 0.452s, full 1m21.083s [*], no-op:  7.145s,
      mvn:  clean: 4.596s, full 2m53.776s,     no-op: 59.108s,

      [*] full build includes downloading all dependencies,
          time can vary due to remote server performance.

  Cons:
  - No Windows support
  - No native Maven Central support (added by macros)
  - No native GWT, Prolog, or WAR support (added by macros)
  - Bootstrap of buck requires Ant

Getting started:

  git clone https://gerrit.googlesource.com/buck
  cd buck
  ant

  Mac OS X:
    PATH="`pwd`/bin:/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands:$PATH"

  Linux:
    PATH="`pwd`/bin:$PATH"

Importing into Eclipse:

  $ time buck build :eclipse
  0m48.949s

  Import existing project from `pwd`
  Import 'gerrit' (do not import other Maven based projects)
  Expand 'gerrit'
  Right click 'buck-out' > Properties
  Under Attributes check 'Derived'

  If the code doesn't currently compile but an updated classpath
  is needed, refresh the configs and obtain missing JARs:

  $ buck build :eclipse_project :download

Running JUnit tests:

  $ time buck test --all -e slow  # skip slow tests
  0m19.320s

  $ time buck test --all          # includes acceptance tests
  5m17.517s

Building WAR:

  $ buck build :gerrit
  $ java -jar buck-out/gen/gerrit.war

Building release:

  $ buck test --all && buck build :api :release
  $ java -jar buck-out/gen/release.war
  $ ls -lh buck-out/gen/{extension,plugin}-api.jar

Downloading dependencies:

  Dependencies are normally downloaded automatically, but Buck can
  inspect its graph and download missing dependencies so future
  compiles can run without the network:

  $ buck build :download

[1] http://facebook.github.io/buck/

Change-Id: I40853b108bd8e153cefa0896a5280a9a5ff81655
2013-05-09 13:40:36 +00:00
Chad Horohoe
b19a85d0b4 Adding sublime project files to .gitignore
Change-Id: Ib83a726dd5444714b9045067de206ee2de414032
2012-11-02 10:20:21 -04:00
Anatol Pomazau
2f12c650ec Add Intellij IDEA files to ignore list
Change-Id: Ie948a1b3c9df95e79fc09ef343d0d49ff3b267c2
2012-05-03 13:17:43 -07:00
Mohan Zhang
3a6dbe93c3 Add entries to .gitignore for m2e settings/preference files
Change-Id: Ie70c285440b6200ad7f4dd8dea8a97317e1e62fc
2011-12-12 16:56:53 -06:00
Nico Sallembien
c6e695f482 Add standard eclipse generated files to .gitignore
These files keep showing up when I run git add . and it's throwing off
the release script, so I am telling git to forget about them.

Change-Id: I4c12e9c4d72acf8e8dc1345b6903cfa224e621ed
2010-01-29 16:53:05 -08:00
Shawn O. Pearce
955d00eb81 Completely remove GerritServer.properties
We now load our database settings in hosted development mode from
the $site_path/etc/gerrit.config, just like we would under daemon.
This reduces the number of weird configurations that are supported.

Change-Id: I0a13f16dd74bdb034d05650eadd5e36771109f3e
Signed-off-by: Shawn O. Pearce <sop@google.com>
2009-12-19 13:38:19 -08:00
Shawn O. Pearce
dbbca8bf56 daemon: Run correctly under Eclipse debugger
We now can launch the daemon correctly from within the Eclipse debugger
without having to switch to using the WAR in our CLASSPATH.  This works
by allowing Eclipse to supply all of the CLASSPATH, but we have to go
find our WAR resource content in gerrit-gwtui/target.

Bug: 340
Change-Id: I7dfbc0654cdc10099fb3de3041e615a9fda5fdb4
Signed-off-by: Shawn O. Pearce <sop@google.com>
2009-12-07 15:23:16 -08:00
Shawn O. Pearce
44671f5c69 Rewrite our build as modular maven components
This refactoring splits the code up into different components, with
their own per-component CLASSPATH.  By moving all of our classes
into isolated components we can better isolate the classpaths and
try to avoid unexpected dependency problems.  It also allows us to
more clearly define which components are used by the GWT UI and
thus must be compiled under GWT, and which components are run on
the server and can therefore use more of the J2SE API.

Change-Id: I833cc22bacc5655d1c9099ed7c2b0e0a5b08855a
Signed-off-by: Shawn O. Pearce <sop@google.com>
2009-11-11 16:54:06 -08:00
Shawn O. Pearce
8d2f184389 Switch to GWT 1.6's new HostedMode debugging utility
The pain in the neck thing is, we have to use their new WAR style
output, which requires us to run "mvn war:inplace" before we can
start debugging, or if any dependencies change, but we also need
to clean that out.

All RPC handles also moved inside of the module directory, which
makes it easier to debug in the hosted mode browser but breaks any
existing browser client, even though the JSON payloads have not
changed in format.

Bug: GERRIT-75
Signed-off-by: Shawn O. Pearce <sop@google.com>
2009-05-13 12:02:25 -07:00
Shawn O. Pearce
8cbf4dc01d Ignore GerritServer.properties at the top level
This might exist if the developer is trying to test directly from
the source directory by running something like:

  mvn package && java -jar target/gerrit-*.war foo

and the "foo" subcommand requires GerritServer.properties to speak
to the database.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2009-03-07 16:49:22 -08:00
Shawn O. Pearce
263786e2fd Move appjar contents up one level to normalize our structure
In general we map one Maven project description to one Git
repository, as each Maven project has its own unique version
number for its artifact.

This change pulls everything up one level so its a much more
typical directory layout, where the pom.xml is at the root
of the directory structure.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2009-02-02 16:04:52 -08:00
Shawn O. Pearce
f14a1ded65 Switch build system to use Maven 2
This way we can easily depend upon other projects which also use
Maven, without needing to embed all of their dependencies directly
within our repository.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-12-20 17:48:48 -08:00
Shawn O. Pearce
38270b642d Import all patch data again from Git to ensure it is accurate
We've made some schema changes about how patch data is stored and
represented in the Gerrit 2 database, so we need to import all of
the patch entities over again.  This change includes a CLI tool
that can be run to re-import one or more patch set entities from
the corresponding Git commit.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-12-12 18:25:12 -08:00
Shawn O. Pearce
5f95e2d5db Add JGit to the build path so we can access Git repositories
This gives us server-side access to Git repositories,
without forking external processes.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-12-12 14:44:43 -08:00
Shawn O. Pearce
1176f4538d Build a standard .war file for Gerrit
We also include .gz versions of every static resource, because
this allows Jetty (and possibly other servers) to efficiently
send the pre-compressed static resource to the client.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-12-01 11:25:57 -08:00
Shawn O. Pearce
2f09570d60 export_safe: A script to scrub and export a Gerrit2 database
This script is just a simple tool to help me export the current
PostgreSQL database into a format that is safe to send to a 3rd
party.  All of the data is public on Gerrit's website, except for
the user's physical address contact information.  We scrub that
out because we do not have consent from our users to disclose
that information.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-11-26 16:19:24 -08:00
Shawn O. Pearce
1d638cec61 Ignore hs_err_pid*.log as they are created by JRE crashes
We don't need to track these files from hosted mode crashes.
Keeping them in .gitignore makes it easier to "git add ." and
not worry about them being included into the project.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-11-22 21:17:55 -08:00
Shawn O. Pearce
23571ab1fa Initial project setup of Gerrit 2
Gerrit 2 is a ground-up rewrite of Gerrit, using GWT (Google Web
Toolkit) for the client side user interface and a Java servlet
based backend.

Signed-off-by: Shawn O. Pearce <sop@google.com>
2008-11-14 16:59:34 -08:00