Browse Source
It stopped working when we moved to the Eclipse foundation's Gerrit server since it doesn't use the Gerrit internal user store but LDAP. Instead, since 2.0, we use the Eclipse foundation's automatic IP log generator [1] to generate IP logs for releasing jgit and egit. [1] http://www.eclipse.org/projects/ip_log_selector.php Change-Id: I98dc65efb62909bc0258e6c680df0c93a57e9677 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>stable-2.3
Matthias Sohn
12 years ago
43 changed files with 0 additions and 3390 deletions
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="resources"/> |
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> |
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> |
||||
<classpathentry kind="output" path="bin"/> |
||||
</classpath> |
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>org.eclipse.jgit.iplog</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.pde.ManifestBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.pde.SchemaBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
<nature>org.eclipse.pde.PluginNature</nature> |
||||
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,3 +0,0 @@
|
||||
#Mon Aug 11 16:46:12 PDT 2008 |
||||
eclipse.preferences.version=1 |
||||
encoding/<project>=UTF-8 |
@ -1,3 +0,0 @@
|
||||
#Mon Mar 24 18:55:50 EDT 2008 |
||||
eclipse.preferences.version=1 |
||||
line.separator=\n |
@ -1,393 +0,0 @@
|
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore |
||||
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull |
||||
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault |
||||
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable |
||||
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled |
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 |
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve |
||||
org.eclipse.jdt.core.compiler.compliance=1.5 |
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate |
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate |
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate |
||||
org.eclipse.jdt.core.compiler.doc.comment.support=enabled |
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning |
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=warning |
||||
org.eclipse.jdt.core.compiler.problem.comparingIdentical=error |
||||
org.eclipse.jdt.core.compiler.problem.deadCode=error |
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning |
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled |
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled |
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning |
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning |
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
||||
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore |
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning |
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled |
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning |
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning |
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error |
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error |
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error |
||||
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled |
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning |
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning |
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error |
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error |
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled |
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled |
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled |
||||
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private |
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning |
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error |
||||
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore |
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore |
||||
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled |
||||
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled |
||||
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private |
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore |
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled |
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning |
||||
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore |
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error |
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error |
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore |
||||
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error |
||||
org.eclipse.jdt.core.compiler.problem.nullReference=error |
||||
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error |
||||
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning |
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning |
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning |
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error |
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning |
||||
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore |
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore |
||||
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning |
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning |
||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore |
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error |
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore |
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning |
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled |
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error |
||||
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled |
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled |
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore |
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning |
||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled |
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning |
||||
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning |
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning |
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning |
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore |
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error |
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore |
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning |
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled |
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled |
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled |
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=error |
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=error |
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=error |
||||
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning |
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=warning |
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled |
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled |
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled |
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error |
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning |
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error |
||||
org.eclipse.jdt.core.compiler.source=1.5 |
||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false |
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 |
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_assignment=0 |
||||
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 |
||||
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 |
||||
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 |
||||
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 |
||||
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 |
||||
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 |
||||
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_after_package=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_field=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_method=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_before_package=0 |
||||
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 |
||||
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 |
||||
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line |
||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line |
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false |
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false |
||||
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false |
||||
org.eclipse.jdt.core.formatter.comment.format_block_comments=true |
||||
org.eclipse.jdt.core.formatter.comment.format_comments=true |
||||
org.eclipse.jdt.core.formatter.comment.format_header=false |
||||
org.eclipse.jdt.core.formatter.comment.format_html=true |
||||
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true |
||||
org.eclipse.jdt.core.formatter.comment.format_line_comments=true |
||||
org.eclipse.jdt.core.formatter.comment.format_source_code=true |
||||
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true |
||||
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true |
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert |
||||
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert |
||||
org.eclipse.jdt.core.formatter.comment.line_length=80 |
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true |
||||
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true |
||||
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false |
||||
org.eclipse.jdt.core.formatter.compact_else_if=true |
||||
org.eclipse.jdt.core.formatter.continuation_indentation=2 |
||||
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 |
||||
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off |
||||
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on |
||||
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false |
||||
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true |
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true |
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true |
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true |
||||
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true |
||||
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true |
||||
org.eclipse.jdt.core.formatter.indent_empty_lines=false |
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true |
||||
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true |
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true |
||||
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false |
||||
org.eclipse.jdt.core.formatter.indentation.size=4 |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert |
||||
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert |
||||
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert |
||||
org.eclipse.jdt.core.formatter.join_lines_in_comments=true |
||||
org.eclipse.jdt.core.formatter.join_wrapped_lines=true |
||||
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false |
||||
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false |
||||
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false |
||||
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false |
||||
org.eclipse.jdt.core.formatter.lineSplit=80 |
||||
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false |
||||
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false |
||||
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 |
||||
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 |
||||
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true |
||||
org.eclipse.jdt.core.formatter.tabulation.char=tab |
||||
org.eclipse.jdt.core.formatter.tabulation.size=4 |
||||
org.eclipse.jdt.core.formatter.use_on_off_tags=true |
||||
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false |
||||
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true |
||||
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true |
||||
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true |
@ -1,61 +0,0 @@
|
||||
eclipse.preferences.version=1 |
||||
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true |
||||
formatter_profile=_JGit Format |
||||
formatter_settings_version=12 |
||||
org.eclipse.jdt.ui.ignorelowercasenames=true |
||||
org.eclipse.jdt.ui.importorder=java;javax;org;com; |
||||
org.eclipse.jdt.ui.ondemandthreshold=99 |
||||
org.eclipse.jdt.ui.staticondemandthreshold=99 |
||||
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/> |
||||
sp_cleanup.add_default_serial_version_id=true |
||||
sp_cleanup.add_generated_serial_version_id=false |
||||
sp_cleanup.add_missing_annotations=false |
||||
sp_cleanup.add_missing_deprecated_annotations=true |
||||
sp_cleanup.add_missing_methods=false |
||||
sp_cleanup.add_missing_nls_tags=false |
||||
sp_cleanup.add_missing_override_annotations=true |
||||
sp_cleanup.add_missing_override_annotations_interface_methods=false |
||||
sp_cleanup.add_serial_version_id=false |
||||
sp_cleanup.always_use_blocks=true |
||||
sp_cleanup.always_use_parentheses_in_expressions=false |
||||
sp_cleanup.always_use_this_for_non_static_field_access=false |
||||
sp_cleanup.always_use_this_for_non_static_method_access=false |
||||
sp_cleanup.convert_to_enhanced_for_loop=false |
||||
sp_cleanup.correct_indentation=false |
||||
sp_cleanup.format_source_code=true |
||||
sp_cleanup.format_source_code_changes_only=true |
||||
sp_cleanup.make_local_variable_final=false |
||||
sp_cleanup.make_parameters_final=false |
||||
sp_cleanup.make_private_fields_final=true |
||||
sp_cleanup.make_type_abstract_if_missing_method=false |
||||
sp_cleanup.make_variable_declarations_final=false |
||||
sp_cleanup.never_use_blocks=false |
||||
sp_cleanup.never_use_parentheses_in_expressions=true |
||||
sp_cleanup.on_save_use_additional_actions=true |
||||
sp_cleanup.organize_imports=false |
||||
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false |
||||
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true |
||||
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true |
||||
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false |
||||
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false |
||||
sp_cleanup.remove_private_constructors=true |
||||
sp_cleanup.remove_trailing_whitespaces=true |
||||
sp_cleanup.remove_trailing_whitespaces_all=true |
||||
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false |
||||
sp_cleanup.remove_unnecessary_casts=false |
||||
sp_cleanup.remove_unnecessary_nls_tags=false |
||||
sp_cleanup.remove_unused_imports=false |
||||
sp_cleanup.remove_unused_local_variables=false |
||||
sp_cleanup.remove_unused_private_fields=true |
||||
sp_cleanup.remove_unused_private_members=false |
||||
sp_cleanup.remove_unused_private_methods=true |
||||
sp_cleanup.remove_unused_private_types=true |
||||
sp_cleanup.sort_members=false |
||||
sp_cleanup.sort_members_all=false |
||||
sp_cleanup.use_blocks=false |
||||
sp_cleanup.use_blocks_only_for_return_and_throw=false |
||||
sp_cleanup.use_parentheses_in_expressions=false |
||||
sp_cleanup.use_this_for_non_static_field_access=false |
||||
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true |
||||
sp_cleanup.use_this_for_non_static_method_access=false |
||||
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true |
@ -1,4 +0,0 @@
|
||||
#Tue Jul 19 20:11:28 CEST 2011 |
||||
eclipse.preferences.version=1 |
||||
project.repository.kind=bugzilla |
||||
project.repository.url=https\://bugs.eclipse.org/bugs |
@ -1,3 +0,0 @@
|
||||
#Tue Jul 19 20:11:28 CEST 2011 |
||||
commit.comment.template=${task.description} \n\nBug\: ${task.key} |
||||
eclipse.preferences.version=1 |
@ -1,94 +0,0 @@
|
||||
#Tue Oct 18 00:52:01 CEST 2011 |
||||
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error |
||||
ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error |
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error |
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error |
||||
API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error |
||||
CLASS_ELEMENT_TYPE_ADDED_METHOD=Error |
||||
CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||
CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||
CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||
CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||
CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error |
||||
CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||
CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||
CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error |
||||
CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||
CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||
CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error |
||||
CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||
CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||
CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error |
||||
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||
ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||
ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||
ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error |
||||
ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||
ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||
ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||
FIELD_ELEMENT_TYPE_ADDED_VALUE=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error |
||||
FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error |
||||
FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error |
||||
FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error |
||||
ILLEGAL_EXTEND=Warning |
||||
ILLEGAL_IMPLEMENT=Warning |
||||
ILLEGAL_INSTANTIATE=Warning |
||||
ILLEGAL_OVERRIDE=Warning |
||||
ILLEGAL_REFERENCE=Warning |
||||
INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error |
||||
INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error |
||||
INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||
INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error |
||||
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||
INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||
INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||
INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||
INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||
INVALID_JAVADOC_TAG=Ignore |
||||
INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error |
||||
LEAK_EXTEND=Warning |
||||
LEAK_FIELD_DECL=Warning |
||||
LEAK_IMPLEMENT=Warning |
||||
LEAK_METHOD_PARAM=Warning |
||||
LEAK_METHOD_RETURN_TYPE=Warning |
||||
METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||
METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||
METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||
METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error |
||||
METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||
METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error |
||||
METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error |
||||
METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error |
||||
METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error |
||||
METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error |
||||
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error |
||||
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error |
||||
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error |
||||
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error |
||||
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error |
||||
UNUSED_PROBLEM_FILTERS=Warning |
||||
automatically_removed_unused_problem_filters=false |
||||
eclipse.preferences.version=1 |
||||
incompatible_api_component_version=Error |
||||
incompatible_api_component_version_include_major_without_breaking_change=Disabled |
||||
incompatible_api_component_version_include_minor_without_api_change=Disabled |
||||
invalid_since_tag_version=Error |
||||
malformed_since_tag=Error |
||||
missing_since_tag=Error |
||||
report_api_breakage_when_major_version_incremented=Disabled |
||||
report_resolution_errors_api_component=Warning |
@ -1,3 +0,0 @@
|
||||
#Thu Jan 14 14:34:32 CST 2010 |
||||
eclipse.preferences.version=1 |
||||
resolve.requirebundle=false |
@ -1,23 +0,0 @@
|
||||
Manifest-Version: 1.0 |
||||
Bundle-ManifestVersion: 2 |
||||
Bundle-Name: %plugin_name |
||||
Bundle-SymbolicName: org.eclipse.jgit.iplog |
||||
Bundle-Version: 2.3.0.qualifier |
||||
Bundle-Vendor: %provider_name |
||||
Bundle-Localization: plugin |
||||
Bundle-ActivationPolicy: lazy |
||||
Bundle-RequiredExecutionEnvironment: J2SE-1.5 |
||||
Import-Package: org.eclipse.jgit.diff;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.dircache;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.errors;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.lib;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.nls;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.revplot;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.revwalk;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.revwalk.filter;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.storage.file;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.transport;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.treewalk;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.treewalk.filter;version="[2.3.0,2.4.0)", |
||||
org.eclipse.jgit.util;version="[2.3.0,2.4.0)" |
||||
Export-Package: org.eclipse.jgit.iplog;version="2.3.0" |
@ -1,54 +0,0 @@
|
||||
# ----------------------------------------------------------- |
||||
# This document describes how to generate the Eclipse ip log |
||||
# for the eclipse project technology.jgit using a local clone |
||||
# of the git repository |
||||
# git://egit.eclipse.org/jgit.git |
||||
# starting point is a manually written file |
||||
# .eclipse_iplog |
||||
# located in the repository's work dir root path |
||||
# which is describing the project, see first section of this |
||||
# file in the jgit root directory: |
||||
# $JGIT_BASE/.eclipse_iplog |
||||
# ----------------------------------------------------------- |
||||
# Prepare: |
||||
# jgit executable (assuming jgit mvn build is up to date) |
||||
export jgit="~/src/git/jgit/org.eclipse.jgit.pgm/target/jgit" |
||||
|
||||
# repository work dir root path |
||||
export WORK_DIR="~/src/git/jgit/" |
||||
|
||||
# cd to repository work dir root path |
||||
cd $WORK_DIR |
||||
|
||||
# ----------------------------------------------------------- |
||||
# Update the CQ list: |
||||
# - this command updates file .eclipse_iplog |
||||
jgit eclipse-ipzilla |
||||
|
||||
# - if there are any updates 'git commit' them |
||||
git add .eclipse_iplog |
||||
git commit |
||||
|
||||
# - type in ipzilla user and password |
||||
|
||||
# ----------------------------------------------------------- |
||||
# Get the committer data from gerrit: |
||||
# - start gerrit gsql via ssh |
||||
# options: |
||||
# -p : ssh port gerrit is listening on |
||||
ssh -p 29418 username@egit.eclipse.org gerrit gsql --format PRETTY |
||||
|
||||
# - type in ssh passphrase for your ssh key |
||||
# - run the SQL query (cut and paste content to interactive gerrit shell) |
||||
# org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/gsql_query.txt |
||||
# - copy the query result into the file (no headers, no blank lines): |
||||
# $WORK_DIR/.git/gerrit_committers |
||||
|
||||
# ----------------------------------------------------------- |
||||
# Generate the iplog: |
||||
# options: |
||||
# -- version : the project version the iplog is to be generated for |
||||
# - o : the output file |
||||
jgit eclipse-iplog --version=1.3.0 -o $WORK_DIR/jgit-1.3.0.xml |
||||
|
||||
|
@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?> |
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml"> |
||||
|
||||
<head> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> |
||||
<title>Eclipse Distribution License - Version 1.0</title> |
||||
<style type="text/css"> |
||||
body { |
||||
size: 8.5in 11.0in; |
||||
margin: 0.25in 0.5in 0.25in 0.5in; |
||||
tab-interval: 0.5in; |
||||
} |
||||
p { |
||||
margin-left: auto; |
||||
margin-top: 0.5em; |
||||
margin-bottom: 0.5em; |
||||
} |
||||
p.list { |
||||
margin-left: 0.5in; |
||||
margin-top: 0.05em; |
||||
margin-bottom: 0.05em; |
||||
} |
||||
</style> |
||||
|
||||
</head> |
||||
|
||||
<body lang="EN-US"> |
||||
|
||||
<p><b>Eclipse Distribution License - v 1.0</b></p> |
||||
|
||||
<p>Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. </p> |
||||
|
||||
<p>All rights reserved.</p> |
||||
<p>Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
<ul><li>Redistributions of source code must retain the above copyright notice, |
||||
this list of conditions and the following disclaimer. </li> |
||||
<li>Redistributions in binary form must reproduce the above copyright notice, |
||||
this list of conditions and the following disclaimer in the documentation |
||||
and/or other materials provided with the distribution. </li> |
||||
<li>Neither the name of the Eclipse Foundation, Inc. nor the names of its |
||||
contributors may be used to endorse or promote products derived from |
||||
this software without specific prior written permission. </li></ul> |
||||
</p> |
||||
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
||||
POSSIBILITY OF SUCH DAMAGE.</p> |
||||
|
||||
</body> |
||||
|
||||
</html> |
@ -1,6 +0,0 @@
|
||||
source.. = src/ |
||||
output.. = bin/ |
||||
bin.includes = META-INF/,\ |
||||
.,\ |
||||
plugin.properties,\ |
||||
about.html |
@ -1,2 +0,0 @@
|
||||
plugin_name=JGit IP Log Generator |
||||
provider_name=Eclipse.org |
@ -1,103 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!-- |
||||
Copyright (C) 2009-2010, Google Inc. |
||||
Copyright (C) 2008, Imran M Yousuf <imyousuf@smartitengineering.com> |
||||
and other copyright owners as documented in the project's IP log. |
||||
|
||||
This program and the accompanying materials are made available |
||||
under the terms of the Eclipse Distribution License v1.0 which |
||||
accompanies this distribution, is reproduced below, and is |
||||
available at http://www.eclipse.org/org/documents/edl-v10.php |
||||
|
||||
All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or |
||||
without modification, are permitted provided that the following |
||||
conditions are met: |
||||
|
||||
- Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
- Redistributions in binary form must reproduce the above |
||||
copyright notice, this list of conditions and the following |
||||
disclaimer in the documentation and/or other materials provided |
||||
with the distribution. |
||||
|
||||
- Neither the name of the Eclipse Foundation, Inc. nor the |
||||
names of its contributors may be used to endorse or promote |
||||
products derived from this software without specific prior |
||||
written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
--> |
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
||||
<modelVersion>4.0.0</modelVersion> |
||||
|
||||
<parent> |
||||
<groupId>org.eclipse.jgit</groupId> |
||||
<artifactId>org.eclipse.jgit-parent</artifactId> |
||||
<version>2.3.0-SNAPSHOT</version> |
||||
</parent> |
||||
|
||||
<artifactId>org.eclipse.jgit.iplog</artifactId> |
||||
<name>JGit - Eclipse IP Log Generator</name> |
||||
|
||||
<description> |
||||
Creates an IP log for Git based projects. |
||||
</description> |
||||
|
||||
<properties> |
||||
<translate-qualifier/> |
||||
</properties> |
||||
|
||||
<dependencies> |
||||
<dependency> |
||||
<groupId>org.eclipse.jgit</groupId> |
||||
<artifactId>org.eclipse.jgit</artifactId> |
||||
<version>${project.version}</version> |
||||
</dependency> |
||||
</dependencies> |
||||
|
||||
<build> |
||||
<sourceDirectory>src/</sourceDirectory> |
||||
|
||||
<resources> |
||||
<resource> |
||||
<directory>.</directory> |
||||
<includes> |
||||
<include>plugin.properties</include> |
||||
<include>about.html</include> |
||||
</includes> |
||||
</resource> |
||||
<resource> |
||||
<directory>resources/</directory> |
||||
</resource> |
||||
</resources> |
||||
|
||||
<plugins> |
||||
<plugin> |
||||
<artifactId>maven-jar-plugin</artifactId> |
||||
<configuration> |
||||
<archive> |
||||
<manifestFile>${bundle-manifest}</manifestFile> |
||||
</archive> |
||||
</configuration> |
||||
</plugin> |
||||
</plugins> |
||||
</build> |
||||
</project> |
@ -1,17 +0,0 @@
|
||||
CQString=CQ {0} |
||||
CSVParsingError=CSV parsing error: {0} |
||||
cannotLock=Cannot lock {0} |
||||
cannotSerializeXML=Cannot serialize XML |
||||
cannotWrite=Cannot write {0} |
||||
committerString=Committer {0} {1} |
||||
configurationFileInCommitHasNoProjectsDeclared=Configuration file {0} in commit {1} has no projects declared. |
||||
configurationFileInCommitIsInvalid=Configuration file {0} in commit {1} is invalid |
||||
contributorString=Contributor {0} |
||||
incorrectlyScanned=Incorrectly scanned {0} |
||||
invalidDate=Invalid date: {0} |
||||
invalidURIFormat=Invalid URI format: {0} |
||||
loginFailed=Login as {0} to {1} failed: {2} |
||||
pageTitleWas=page title was "{0}" |
||||
projectString=Project {0} ({1}) |
||||
queryFailed=Query {0} failed: {1} |
||||
responseNotHTMLAsExpected=Response not HTML as expected |
@ -1,164 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import static java.lang.Long.valueOf; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.Comparator; |
||||
|
||||
/** |
||||
* A contribution questionnaire stored in IPzilla. |
||||
* |
||||
* @see <a href="http://wiki.eclipse.org/IPzilla">IPzilla - Eclipsepedia</a> |
||||
* @see <a href="https://dev.eclipse.org/ipzilla/">IPzilla - Login</a> |
||||
*/ |
||||
class CQ { |
||||
/** Sorts CQs by their unique number. */ |
||||
static final Comparator<CQ> COMPARATOR = new Comparator<CQ>() { |
||||
public int compare(CQ a, CQ b) { |
||||
int cmp = state(a) - state(b); |
||||
if (cmp == 0) |
||||
cmp = compare(a.getID(), b.getID()); |
||||
return cmp; |
||||
} |
||||
|
||||
private int state(CQ a) { |
||||
if ("approved".equals(a.getState())) |
||||
return 1; |
||||
return 50; |
||||
} |
||||
|
||||
private int compare(long a, long b) { |
||||
return a < b ? -1 : a == b ? 0 : 1; |
||||
} |
||||
}; |
||||
|
||||
private final long id; |
||||
|
||||
private String description; |
||||
|
||||
private String license; |
||||
|
||||
private String use; |
||||
|
||||
private String state; |
||||
|
||||
private String comments; |
||||
|
||||
/** |
||||
* @param id |
||||
*/ |
||||
CQ(final long id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
/** @return unique id number of the contribution questionnaire. */ |
||||
long getID() { |
||||
return id; |
||||
} |
||||
|
||||
/** @return short description of this CQ record. */ |
||||
String getDescription() { |
||||
return description; |
||||
} |
||||
|
||||
void setDescription(String description) { |
||||
this.description = description; |
||||
} |
||||
|
||||
/** @return the license the contribution is under. */ |
||||
String getLicense() { |
||||
return license; |
||||
} |
||||
|
||||
void setLicense(String license) { |
||||
this.license = license; |
||||
} |
||||
|
||||
/** @return how this code is used by the project, e.g. "unmodified binary". */ |
||||
String getUse() { |
||||
return use; |
||||
} |
||||
|
||||
void setUse(String use) { |
||||
this.use = use; |
||||
} |
||||
|
||||
/** @return TODO find out what state is */ |
||||
String getState() { |
||||
return state; |
||||
} |
||||
|
||||
void setState(String state) { |
||||
this.state = state; |
||||
} |
||||
|
||||
/** @return any additional comments about this particular CQ. */ |
||||
String getComments() { |
||||
return comments; |
||||
} |
||||
|
||||
void setComments(String comments) { |
||||
this.comments = comments; |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return (int) getID(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object other) { |
||||
if (other instanceof CQ) { |
||||
return ((CQ) other).getID() == getID(); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return MessageFormat.format(IpLogText.get().CQString, valueOf(getID())); |
||||
} |
||||
} |
@ -1,130 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.IOException; |
||||
import java.text.MessageFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.LinkedHashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** A crude CSV file parser. */ |
||||
class CSV { |
||||
private final BufferedReader in; |
||||
|
||||
private List<String> columns; |
||||
|
||||
CSV(BufferedReader br) throws IOException { |
||||
in = br; |
||||
columns = readLine(); |
||||
} |
||||
|
||||
Map<String, String> next() throws IOException { |
||||
List<String> row = readLine(); |
||||
if (columns == null || row == null) |
||||
return null; |
||||
|
||||
Map<String, String> r = new LinkedHashMap<String, String>(); |
||||
for (int col = 0; col < columns.size(); col++) |
||||
r.put(columns.get(col), row.get(col)); |
||||
return r; |
||||
} |
||||
|
||||
private List<String> readLine() throws IOException { |
||||
String line = in.readLine(); |
||||
if (line == null || line.length() == 0) |
||||
return null; |
||||
|
||||
ArrayList<String> row; |
||||
if (columns != null) |
||||
row = new ArrayList<String>(columns.size()); |
||||
else |
||||
row = new ArrayList<String>(); |
||||
|
||||
int p = 0; |
||||
while (p < line.length()) { |
||||
if (line.charAt(p) == '"') { |
||||
p++; // skip the opening quote.
|
||||
|
||||
StringBuilder b = new StringBuilder(); |
||||
SCAN: while (p < line.length()) { |
||||
char c = line.charAt(p); |
||||
switch (c) { |
||||
case '"': |
||||
p++; |
||||
break SCAN; |
||||
|
||||
case '\\': |
||||
b.append(line.charAt(p + 1)); |
||||
p += 2; |
||||
break; |
||||
|
||||
default: |
||||
b.append(c); |
||||
p++; |
||||
break; |
||||
} |
||||
} |
||||
if (p < line.length() && line.charAt(p) != ',') |
||||
throw new IOException(MessageFormat.format(IpLogText.get().CSVParsingError, line)); |
||||
row.add(b.toString()); |
||||
p++; // skip the trailing comma (if present)
|
||||
|
||||
} else if (line.charAt(p) == ',') { |
||||
row.add(""); |
||||
p++; |
||||
if (p == line.length()) |
||||
row.add(""); |
||||
|
||||
} else { |
||||
int comma = line.indexOf(',', p); |
||||
row.add(line.substring(p, comma)); |
||||
p = comma + 1; |
||||
} |
||||
} |
||||
return row; |
||||
} |
||||
} |
@ -1,206 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.Collections; |
||||
import java.util.Comparator; |
||||
import java.util.Date; |
||||
import java.util.HashSet; |
||||
import java.util.List; |
||||
import java.util.Set; |
||||
|
||||
/** A project committer. */ |
||||
class Committer { |
||||
/** Sorts committers by their name first name, then last name. */ |
||||
static final Comparator<Committer> COMPARATOR = new Comparator<Committer>() { |
||||
public int compare(Committer a, Committer b) { |
||||
int cmp = a.firstName.compareTo(b.firstName); |
||||
if (cmp == 0) |
||||
cmp = a.lastName.compareTo(b.lastName); |
||||
return cmp; |
||||
} |
||||
}; |
||||
|
||||
private final String id; |
||||
|
||||
private String firstName; |
||||
|
||||
private String lastName; |
||||
|
||||
private String affiliation; |
||||
|
||||
private boolean hasCommits; |
||||
|
||||
private String comments; |
||||
|
||||
private final Set<String> emailAddresses = new HashSet<String>(); |
||||
|
||||
private final List<ActiveRange> active = new ArrayList<ActiveRange>(2); |
||||
|
||||
/** |
||||
* @param id |
||||
* unique identity of the committer |
||||
*/ |
||||
Committer(String id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
/** @return unique identity of this committer in the foundation database. */ |
||||
String getID() { |
||||
return id; |
||||
} |
||||
|
||||
/** @return first name of the committer; their given name. */ |
||||
String getFirstName() { |
||||
return firstName; |
||||
} |
||||
|
||||
void setFirstName(String firstName) { |
||||
this.firstName = firstName; |
||||
} |
||||
|
||||
/** @return last name of the committer; their surname or family name. */ |
||||
String getLastName() { |
||||
return lastName; |
||||
} |
||||
|
||||
void setLastName(String lastName) { |
||||
this.lastName = lastName; |
||||
} |
||||
|
||||
/** @return the organization the committer is affiliated with. */ |
||||
String getAffiliation() { |
||||
return affiliation; |
||||
} |
||||
|
||||
void setAffiliation(String affiliation) { |
||||
this.affiliation = affiliation; |
||||
} |
||||
|
||||
/** @return true if this committer is still an active member of the project. */ |
||||
boolean isActive() { |
||||
if (active.isEmpty()) |
||||
return false; |
||||
ActiveRange last = active.get(active.size() - 1); |
||||
return last.end == null; |
||||
} |
||||
|
||||
/** @return true if this committer has commits in the project. */ |
||||
boolean hasCommits() { |
||||
return hasCommits; |
||||
} |
||||
|
||||
void setHasCommits(boolean hasCommits) { |
||||
this.hasCommits = hasCommits; |
||||
} |
||||
|
||||
/** @return any additional comments about this committer. */ |
||||
String getComments() { |
||||
return comments; |
||||
} |
||||
|
||||
void setComments(String comments) { |
||||
this.comments = comments; |
||||
} |
||||
|
||||
void addEmailAddress(String email) { |
||||
emailAddresses.add(email); |
||||
} |
||||
|
||||
void addActiveRange(ActiveRange r) { |
||||
active.add(r); |
||||
Collections.sort(active, new Comparator<ActiveRange>() { |
||||
public int compare(ActiveRange a, ActiveRange b) { |
||||
return a.begin.compareTo(b.begin); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* @param when |
||||
* @return true if the event occurred while an active committer. |
||||
*/ |
||||
boolean inRange(Date when) { |
||||
for (ActiveRange ar : active) { |
||||
if (ar.contains(when)) |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return MessageFormat.format(IpLogText.get().committerString, getFirstName(), getLastName()); |
||||
} |
||||
|
||||
/** Date period during which the committer was active. */ |
||||
static class ActiveRange { |
||||
private final Date begin; |
||||
|
||||
private final Date end; |
||||
|
||||
/** |
||||
* @param begin |
||||
* @param end |
||||
*/ |
||||
ActiveRange(Date begin, Date end) { |
||||
this.begin = begin; |
||||
this.end = end; |
||||
} |
||||
|
||||
/** |
||||
* @param when |
||||
* @return true if {@code when} is within this date span. |
||||
*/ |
||||
boolean contains(Date when) { |
||||
if (when.compareTo(begin) < 0) |
||||
return false; |
||||
if (end == null) |
||||
return true; |
||||
return when.compareTo(end) < 0; |
||||
} |
||||
} |
||||
} |
@ -1,100 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.Collection; |
||||
import java.util.Collections; |
||||
import java.util.Comparator; |
||||
import java.util.List; |
||||
|
||||
/** A project contributor (non-committer). */ |
||||
class Contributor { |
||||
/** Sorts contributors by their name first name, then last name. */ |
||||
static final Comparator<Contributor> COMPARATOR = new Comparator<Contributor>() { |
||||
public int compare(Contributor a, Contributor b) { |
||||
return a.name.compareTo(b.name); |
||||
} |
||||
}; |
||||
|
||||
private final String id; |
||||
|
||||
private final String name; |
||||
|
||||
private final List<SingleContribution> contributions = new ArrayList<SingleContribution>(); |
||||
|
||||
/** |
||||
* @param id |
||||
* @param name |
||||
*/ |
||||
Contributor(String id, String name) { |
||||
this.id = id; |
||||
this.name = name; |
||||
} |
||||
|
||||
/** @return unique identity of this contributor in the foundation database. */ |
||||
String getID() { |
||||
return id; |
||||
} |
||||
|
||||
/** @return name of the contributor. */ |
||||
String getName() { |
||||
return name; |
||||
} |
||||
|
||||
/** @return all known contributions. */ |
||||
Collection<SingleContribution> getContributions() { |
||||
return Collections.unmodifiableCollection(contributions); |
||||
} |
||||
|
||||
void add(SingleContribution bug) { |
||||
contributions.add(bug); |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return MessageFormat.format(IpLogText.get().contributorString, getName()); |
||||
} |
||||
} |
@ -1,320 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.io.InputStreamReader; |
||||
import java.io.OutputStream; |
||||
import java.io.Reader; |
||||
import java.io.UnsupportedEncodingException; |
||||
import java.net.ConnectException; |
||||
import java.net.CookieHandler; |
||||
import java.net.HttpURLConnection; |
||||
import java.net.MalformedURLException; |
||||
import java.net.Proxy; |
||||
import java.net.ProxySelector; |
||||
import java.net.URISyntaxException; |
||||
import java.net.URL; |
||||
import java.net.URLEncoder; |
||||
import java.text.MessageFormat; |
||||
import java.util.Collection; |
||||
import java.util.Collections; |
||||
import java.util.HashMap; |
||||
import java.util.HashSet; |
||||
import java.util.LinkedHashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
import java.util.Set; |
||||
import java.util.TreeSet; |
||||
import java.util.regex.Matcher; |
||||
import java.util.regex.Pattern; |
||||
|
||||
import org.eclipse.jgit.util.HttpSupport; |
||||
|
||||
/** A crude interface to query IPzilla. */ |
||||
class IPZillaQuery { |
||||
private static final String RE_EPL = "^.*(Eclipse Public License|EPL).*$"; |
||||
|
||||
private final URL base; |
||||
|
||||
private final String username; |
||||
|
||||
private final String password; |
||||
|
||||
private final ProxySelector proxySelector = ProxySelector.getDefault(); |
||||
|
||||
IPZillaQuery(URL base, String username, String password) { |
||||
this.base = base; |
||||
this.username = username; |
||||
this.password = password; |
||||
} |
||||
|
||||
Set<CQ> getCQs(Collection<Project> projects) throws IOException { |
||||
try { |
||||
login(); |
||||
Set<CQ> cqs = new HashSet<CQ>(); |
||||
for (Project project : projects) |
||||
cqs.addAll(queryOneProject(project)); |
||||
return cqs; |
||||
} finally { |
||||
// Kill the IPzilla session and log us out from there.
|
||||
logout(); |
||||
} |
||||
} |
||||
|
||||
private Set<CQ> queryOneProject(Project project) throws IOException { |
||||
Map<String, String> p = new LinkedHashMap<String, String>(); |
||||
p.put("bugidtype", "include"); |
||||
p.put("chfieldto", "Now"); |
||||
p.put("component", project.getID()); |
||||
p.put("field-1-0-0", "component"); |
||||
p.put("type-1-0-0", "anyexact"); |
||||
p.put("value-1-0-0", project.getID()); |
||||
p.put("ctype", "csv"); |
||||
|
||||
StringBuilder req = new StringBuilder(); |
||||
for (Map.Entry<String, String> e : p.entrySet()) { |
||||
if (req.length() > 0) |
||||
req.append('&'); |
||||
req.append(URLEncoder.encode(e.getKey(), "UTF-8")); |
||||
req.append('='); |
||||
req.append(URLEncoder.encode(e.getValue(), "UTF-8")); |
||||
} |
||||
URL csv = new URL(new URL(base, "buglist.cgi").toString() + "?" + req); |
||||
|
||||
req = new StringBuilder(); |
||||
for (String name : new String[] { "bug_severity", "bug_status", |
||||
"resolution", "short_desc", "cf_license", "keywords" }) { |
||||
if (req.length() > 0) |
||||
req.append("%20"); |
||||
req.append(name); |
||||
} |
||||
setCookie(csv, "COLUMNLIST", req.toString()); |
||||
|
||||
HttpURLConnection conn = open(csv); |
||||
if (HttpSupport.response(conn) != HttpURLConnection.HTTP_OK) { |
||||
throw new IOException(MessageFormat.format(IpLogText.get().queryFailed |
||||
, csv, conn.getResponseCode() + " " + conn.getResponseMessage())); |
||||
} |
||||
|
||||
BufferedReader br = reader(conn); |
||||
try { |
||||
Set<CQ> cqs = new HashSet<CQ>(); |
||||
CSV in = new CSV(br); |
||||
Map<String, String> row; |
||||
while ((row = in.next()) != null) { |
||||
CQ cq = parseOneCQ(row); |
||||
if (cq != null) |
||||
cqs.add(cq); |
||||
} |
||||
return cqs; |
||||
} finally { |
||||
br.close(); |
||||
} |
||||
} |
||||
|
||||
private static BufferedReader reader(HttpURLConnection conn) |
||||
throws UnsupportedEncodingException, IOException { |
||||
String encoding = conn.getContentEncoding(); |
||||
InputStream in = conn.getInputStream(); |
||||
if (encoding != null && !encoding.equals("")) |
||||
return new BufferedReader(new InputStreamReader(in, encoding)); |
||||
return new BufferedReader(new InputStreamReader(in)); |
||||
} |
||||
|
||||
private void login() throws MalformedURLException, |
||||
UnsupportedEncodingException, ConnectException, IOException { |
||||
final URL login = new URL(base, "index.cgi"); |
||||
StringBuilder req = new StringBuilder(); |
||||
req.append("Bugzilla_login="); |
||||
req.append(URLEncoder.encode(username, "UTF-8")); |
||||
req.append('&'); |
||||
req.append("Bugzilla_password="); |
||||
req.append(URLEncoder.encode(password, "UTF-8")); |
||||
byte[] reqbin = req.toString().getBytes("UTF-8"); |
||||
|
||||
HttpURLConnection c = open(login); |
||||
c.setDoOutput(true); |
||||
c.setFixedLengthStreamingMode(reqbin.length); |
||||
c.setRequestProperty(HttpSupport.HDR_CONTENT_TYPE, |
||||
"application/x-www-form-urlencoded"); |
||||
OutputStream out = c.getOutputStream(); |
||||
out.write(reqbin); |
||||
out.close(); |
||||
|
||||
if (HttpSupport.response(c) != HttpURLConnection.HTTP_OK) { |
||||
throw new IOException(MessageFormat.format(IpLogText.get().loginFailed |
||||
, username, login, c.getResponseCode() + " " + c.getResponseMessage())); |
||||
} |
||||
|
||||
String content = readFully(c); |
||||
Matcher matcher = Pattern.compile("<title>(.*)</title>", |
||||
Pattern.CASE_INSENSITIVE).matcher(content); |
||||
if (!matcher.find()) { |
||||
throw new IOException(MessageFormat.format(IpLogText.get().loginFailed |
||||
, username, login, IpLogText.get().responseNotHTMLAsExpected)); |
||||
} |
||||
|
||||
String title = matcher.group(1); |
||||
if (!"IPZilla Main Page".equals(title)) { |
||||
throw new IOException(MessageFormat.format(IpLogText.get().loginFailed |
||||
, username, login |
||||
, MessageFormat.format(IpLogText.get().pageTitleWas, title))); |
||||
} |
||||
} |
||||
|
||||
private static String readFully(HttpURLConnection c) throws IOException { |
||||
String enc = c.getContentEncoding(); |
||||
Reader reader; |
||||
if (enc != null) { |
||||
reader = new InputStreamReader(c.getInputStream(), enc); |
||||
} else { |
||||
reader = new InputStreamReader(c.getInputStream(), "ISO-8859-1"); |
||||
} |
||||
try { |
||||
StringBuilder b = new StringBuilder(); |
||||
BufferedReader r = new BufferedReader(reader); |
||||
String line; |
||||
while ((line = r.readLine()) != null) { |
||||
b.append(line).append('\n'); |
||||
} |
||||
return b.toString(); |
||||
} finally { |
||||
reader.close(); |
||||
} |
||||
} |
||||
|
||||
private void logout() throws MalformedURLException, ConnectException, |
||||
IOException { |
||||
HttpSupport.response(open(new URL(base, "relogin.cgi"))); |
||||
} |
||||
|
||||
private HttpURLConnection open(URL url) throws ConnectException, |
||||
IOException { |
||||
Proxy proxy = HttpSupport.proxyFor(proxySelector, url); |
||||
HttpURLConnection c = (HttpURLConnection) url.openConnection(proxy); |
||||
c.setUseCaches(false); |
||||
return c; |
||||
} |
||||
|
||||
private static void setCookie(URL url, String name, String value) |
||||
throws IOException { |
||||
Map<String, List<String>> cols = new HashMap<String, List<String>>(); |
||||
cols.put("Set-Cookie", Collections.singletonList(name + "=" + value)); |
||||
try { |
||||
CookieHandler.getDefault().put(url.toURI(), cols); |
||||
} catch (URISyntaxException e) { |
||||
IOException err = new IOException(MessageFormat.format(IpLogText.get().invalidURIFormat, url)); |
||||
err.initCause(e); |
||||
throw err; |
||||
} |
||||
} |
||||
|
||||
private static CQ parseOneCQ(Map<String, String> row) { |
||||
long id = Long.parseLong(row.get("bug_id")); |
||||
String state = row.get("bug_severity"); |
||||
String bug_status = row.get("bug_status"); |
||||
String resolution = row.get("resolution"); |
||||
String short_desc = row.get("short_desc"); |
||||
String license = row.get("cf_license"); |
||||
|
||||
Set<String> keywords = new TreeSet<String>(); |
||||
for (String w : row.get("keywords").split(", *")) |
||||
keywords.add(w); |
||||
|
||||
// Skip any CQs that were not accepted.
|
||||
//
|
||||
if ("closed".equalsIgnoreCase(state) |
||||
|| "rejected".equalsIgnoreCase(state) |
||||
|| "withdrawn".equalsIgnoreCase(state)) |
||||
return null; |
||||
|
||||
// Skip any CQs under the EPL without nonepl keyword
|
||||
// Skip any CQs with the EPL keyword
|
||||
//
|
||||
if (!keywords.contains("nonepl") && license.matches(RE_EPL)) |
||||
return null; |
||||
if (keywords.contains("epl")) |
||||
return null; |
||||
|
||||
// Work around CQs that were closed in the wrong state.
|
||||
//
|
||||
if ("new".equalsIgnoreCase(state) |
||||
|| "under_review".equalsIgnoreCase(state) |
||||
|| state.startsWith("awaiting_")) { |
||||
if ("RESOLVED".equalsIgnoreCase(bug_status) |
||||
|| "CLOSED".equalsIgnoreCase(bug_status)) { |
||||
if ("FIXED".equalsIgnoreCase(resolution)) |
||||
state = "approved"; |
||||
else |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
StringBuilder use = new StringBuilder(); |
||||
for (String n : new String[] { "unmodified", "modified", "source", |
||||
"binary" }) { |
||||
if (keywords.contains(n)) { |
||||
if (use.length() > 0) |
||||
use.append(' '); |
||||
use.append(n); |
||||
} |
||||
} |
||||
if (keywords.contains("sourceandbinary")) { |
||||
if (use.length() > 0) |
||||
use.append(' '); |
||||
use.append("source & binary"); |
||||
} |
||||
|
||||
CQ cq = new CQ(id); |
||||
cq.setDescription(short_desc); |
||||
cq.setLicense(license); |
||||
cq.setState(state); |
||||
if (use.length() > 0) |
||||
cq.setUse(use.toString().trim()); |
||||
return cq; |
||||
} |
||||
} |
@ -1,634 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.io.OutputStream; |
||||
import java.text.MessageFormat; |
||||
import java.text.ParseException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.Collection; |
||||
import java.util.Collections; |
||||
import java.util.Comparator; |
||||
import java.util.Date; |
||||
import java.util.HashMap; |
||||
import java.util.HashSet; |
||||
import java.util.Map; |
||||
import java.util.Set; |
||||
import java.util.TreeMap; |
||||
import java.util.TreeSet; |
||||
|
||||
import javax.xml.parsers.DocumentBuilderFactory; |
||||
import javax.xml.parsers.ParserConfigurationException; |
||||
import javax.xml.transform.OutputKeys; |
||||
import javax.xml.transform.Transformer; |
||||
import javax.xml.transform.TransformerConfigurationException; |
||||
import javax.xml.transform.TransformerException; |
||||
import javax.xml.transform.TransformerFactory; |
||||
import javax.xml.transform.dom.DOMSource; |
||||
import javax.xml.transform.stream.StreamResult; |
||||
|
||||
import org.eclipse.jgit.diff.Edit; |
||||
import org.eclipse.jgit.diff.EditList; |
||||
import org.eclipse.jgit.diff.MyersDiff; |
||||
import org.eclipse.jgit.diff.RawText; |
||||
import org.eclipse.jgit.diff.RawTextComparator; |
||||
import org.eclipse.jgit.errors.ConfigInvalidException; |
||||
import org.eclipse.jgit.iplog.Committer.ActiveRange; |
||||
import org.eclipse.jgit.lib.BlobBasedConfig; |
||||
import org.eclipse.jgit.lib.Constants; |
||||
import org.eclipse.jgit.lib.MutableObjectId; |
||||
import org.eclipse.jgit.lib.ObjectReader; |
||||
import org.eclipse.jgit.lib.PersonIdent; |
||||
import org.eclipse.jgit.lib.Repository; |
||||
import org.eclipse.jgit.revwalk.RevCommit; |
||||
import org.eclipse.jgit.revwalk.RevTree; |
||||
import org.eclipse.jgit.revwalk.RevWalk; |
||||
import org.eclipse.jgit.treewalk.NameConflictTreeWalk; |
||||
import org.eclipse.jgit.treewalk.TreeWalk; |
||||
import org.eclipse.jgit.treewalk.filter.TreeFilter; |
||||
import org.eclipse.jgit.util.RawParseUtils; |
||||
import org.w3c.dom.Document; |
||||
import org.w3c.dom.Element; |
||||
|
||||
/** |
||||
* Creates an Eclipse IP log in XML format. |
||||
* |
||||
* @see <a href="http://www.eclipse.org/projects/xml/iplog.xsd">IP log XSD</a> |
||||
*/ |
||||
public class IpLogGenerator { |
||||
private static final String IPLOG_NS = "http://www.eclipse.org/projects/xml/iplog"; |
||||
|
||||
private static final String IPLOG_PFX = "iplog:"; |
||||
|
||||
private static final String INDENT = "{http://xml.apache.org/xslt}indent-amount"; |
||||
|
||||
/** Projects indexed by their ID string, e.g. {@code technology.jgit}. */ |
||||
private final Map<String, Project> projects = new TreeMap<String, Project>(); |
||||
|
||||
/** Projects indexed by their ID string, e.g. {@code technology.jgit}. */ |
||||
private final Map<String, Project> consumedProjects = new TreeMap<String, Project>(); |
||||
|
||||
/** Known committers, indexed by their foundation ID. */ |
||||
private final Map<String, Committer> committersById = new HashMap<String, Committer>(); |
||||
|
||||
/** Known committers, indexed by their email address. */ |
||||
private final Map<String, Committer> committersByEmail = new HashMap<String, Committer>(); |
||||
|
||||
/** Discovered contributors. */ |
||||
private final Map<String, Contributor> contributorsByName = new HashMap<String, Contributor>(); |
||||
|
||||
/** All known CQs matching the projects we care about. */ |
||||
private final Set<CQ> cqs = new HashSet<CQ>(); |
||||
|
||||
/** Root commits which were scanned to gather project data. */ |
||||
private final Set<RevCommit> commits = new HashSet<RevCommit>(); |
||||
|
||||
/** The meta file we loaded to bootstrap our definitions. */ |
||||
private IpLogMeta meta; |
||||
|
||||
/** URL to obtain review information about a specific contribution. */ |
||||
private String reviewUrl; |
||||
|
||||
private String characterEncoding = "UTF-8"; |
||||
|
||||
private Repository db; |
||||
|
||||
private RevWalk rw; |
||||
|
||||
private NameConflictTreeWalk tw; |
||||
|
||||
private ObjectReader curs; |
||||
|
||||
private final MutableObjectId idbuf = new MutableObjectId(); |
||||
|
||||
private Document doc; |
||||
|
||||
/** Create an empty generator. */ |
||||
public IpLogGenerator() { |
||||
// Do nothing.
|
||||
} |
||||
|
||||
/** |
||||
* Set the character encoding used to write the output file. |
||||
* |
||||
* @param encodingName |
||||
* the character set encoding name. |
||||
*/ |
||||
public void setCharacterEncoding(String encodingName) { |
||||
characterEncoding = encodingName; |
||||
} |
||||
|
||||
/** |
||||
* Scan a Git repository's history to compute the changes within it. |
||||
* |
||||
* @param repo |
||||
* the repository to scan. |
||||
* @param startCommit |
||||
* commit the IP log is needed for. |
||||
* @param version |
||||
* symbolic label for the version. |
||||
* @throws IOException |
||||
* the repository cannot be read. |
||||
* @throws ConfigInvalidException |
||||
* the {@code .eclipse_iplog} file present at the top level of |
||||
* {@code startId} is not a valid configuration file. |
||||
*/ |
||||
public void scan(Repository repo, RevCommit startCommit, String version) |
||||
throws IOException, ConfigInvalidException { |
||||
try { |
||||
db = repo; |
||||
curs = db.newObjectReader(); |
||||
rw = new RevWalk(curs); |
||||
tw = new NameConflictTreeWalk(curs); |
||||
|
||||
RevCommit c = rw.parseCommit(startCommit); |
||||
|
||||
loadEclipseIpLog(version, c); |
||||
loadCommitters(repo); |
||||
scanProjectCommits(meta.getProjects().get(0), c); |
||||
commits.add(c); |
||||
} finally { |
||||
curs.release(); |
||||
db = null; |
||||
rw = null; |
||||
tw = null; |
||||
} |
||||
} |
||||
|
||||
private void loadEclipseIpLog(String version, RevCommit commit) |
||||
throws IOException, ConfigInvalidException { |
||||
TreeWalk log = TreeWalk.forPath(db, IpLogMeta.IPLOG_CONFIG_FILE, commit |
||||
.getTree()); |
||||
if (log == null) |
||||
return; |
||||
|
||||
meta = new IpLogMeta(); |
||||
try { |
||||
meta.loadFrom(new BlobBasedConfig(null, db, log.getObjectId(0))); |
||||
} catch (ConfigInvalidException e) { |
||||
throw new ConfigInvalidException(MessageFormat.format(IpLogText.get().configurationFileInCommitIsInvalid |
||||
, log.getPathString(), commit.name()), e); |
||||
} |
||||
|
||||
if (meta.getProjects().isEmpty()) { |
||||
throw new ConfigInvalidException(MessageFormat.format(IpLogText.get().configurationFileInCommitHasNoProjectsDeclared |
||||
, log.getPathString(), commit.name())); |
||||
} |
||||
|
||||
for (Project p : meta.getProjects()) { |
||||
p.setVersion(version); |
||||
projects.put(p.getName(), p); |
||||
} |
||||
for (Project p : meta.getConsumedProjects()) { |
||||
consumedProjects.put(p.getName(), p); |
||||
} |
||||
cqs.addAll(meta.getCQs()); |
||||
reviewUrl = meta.getReviewUrl(); |
||||
} |
||||
|
||||
private void loadCommitters(Repository repo) throws IOException { |
||||
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||
File list = new File(repo.getDirectory(), "gerrit_committers"); |
||||
BufferedReader br = new BufferedReader(new FileReader(list)); |
||||
try { |
||||
String line; |
||||
|
||||
while ((line = br.readLine()) != null) { |
||||
String[] field = line.trim().split(" *\\| *"); |
||||
String user = field[1]; |
||||
String name = field[2]; |
||||
String email = field[3]; |
||||
Date begin = parseDate(dt, field[4]); |
||||
Date end = parseDate(dt, field[5]); |
||||
|
||||
if (user.startsWith("username:")) |
||||
user = user.substring("username:".length()); |
||||
|
||||
Committer who = committersById.get(user); |
||||
if (who == null) { |
||||
who = new Committer(user); |
||||
int sp = name.indexOf(' '); |
||||
if (0 < sp) { |
||||
who.setFirstName(name.substring(0, sp).trim()); |
||||
who.setLastName(name.substring(sp + 1).trim()); |
||||
} else { |
||||
who.setFirstName(name); |
||||
who.setLastName(null); |
||||
} |
||||
committersById.put(who.getID(), who); |
||||
} |
||||
|
||||
who.addEmailAddress(email); |
||||
who.addActiveRange(new ActiveRange(begin, end)); |
||||
committersByEmail.put(email, who); |
||||
} |
||||
} finally { |
||||
br.close(); |
||||
} |
||||
} |
||||
|
||||
private static Date parseDate(SimpleDateFormat dt, String value) |
||||
throws IOException { |
||||
if ("NULL".equals(value) || "".equals(value) || value == null) |
||||
return null; |
||||
int dot = value.indexOf('.'); |
||||
if (0 < dot) |
||||
value = value.substring(0, dot); |
||||
try { |
||||
return dt.parse(value); |
||||
} catch (ParseException e) { |
||||
IOException err = new IOException(MessageFormat.format(IpLogText.get().invalidDate, value)); |
||||
err.initCause(e); |
||||
throw err; |
||||
} |
||||
} |
||||
|
||||
private void scanProjectCommits(Project proj, RevCommit start) |
||||
throws IOException { |
||||
rw.reset(); |
||||
rw.markStart(start); |
||||
|
||||
RevCommit commit; |
||||
while ((commit = rw.next()) != null) { |
||||
if (proj.isSkippedCommit(commit)) { |
||||
continue; |
||||
} |
||||
|
||||
final PersonIdent author = commit.getAuthorIdent(); |
||||
final Date when = author.getWhen(); |
||||
|
||||
Committer who = committersByEmail.get(author.getEmailAddress()); |
||||
if (who != null && who.inRange(when)) { |
||||
// Commit was written by the committer while they were
|
||||
// an active committer on the project.
|
||||
//
|
||||
who.setHasCommits(true); |
||||
continue; |
||||
} |
||||
|
||||
// Commit from a non-committer contributor.
|
||||
//
|
||||
final int cnt = commit.getParentCount(); |
||||
if (2 <= cnt) { |
||||
// Avoid a pointless merge attributed to a non-committer.
|
||||
// Skip this commit if every file matches at least one
|
||||
// of the parent commits exactly, if so then the blame
|
||||
// for code in that file can be fully passed onto that
|
||||
// parent and this non-committer isn't responsible.
|
||||
//
|
||||
tw.setFilter(TreeFilter.ANY_DIFF); |
||||
tw.setRecursive(true); |
||||
|
||||
RevTree[] trees = new RevTree[1 + cnt]; |
||||
trees[0] = commit.getTree(); |
||||
for (int i = 0; i < cnt; i++) |
||||
trees[i + 1] = commit.getParent(i).getTree(); |
||||
tw.reset(trees); |
||||
|
||||
boolean matchAll = true; |
||||
while (tw.next()) { |
||||
boolean matchOne = false; |
||||
for (int i = 1; i <= cnt; i++) { |
||||
if (tw.getRawMode(0) == tw.getRawMode(i) |
||||
&& tw.idEqual(0, i)) { |
||||
matchOne = true; |
||||
break; |
||||
} |
||||
} |
||||
if (!matchOne) { |
||||
matchAll = false; |
||||
break; |
||||
} |
||||
} |
||||
if (matchAll) |
||||
continue; |
||||
} |
||||
|
||||
Contributor contributor = contributorsByName.get(author.getName()); |
||||
if (contributor == null) { |
||||
String id = author.getEmailAddress(); |
||||
String name = author.getName(); |
||||
contributor = new Contributor(id, name); |
||||
contributorsByName.put(name, contributor); |
||||
} |
||||
|
||||
String id = commit.name(); |
||||
String subj = commit.getShortMessage(); |
||||
SingleContribution item = new SingleContribution(id, when, subj); |
||||
|
||||
if (2 <= cnt) { |
||||
item.setSize("(merge)"); |
||||
contributor.add(item); |
||||
continue; |
||||
} |
||||
|
||||
int addedLines = 0; |
||||
if (1 == cnt) { |
||||
final RevCommit parent = commit.getParent(0); |
||||
tw.setFilter(TreeFilter.ANY_DIFF); |
||||
tw.setRecursive(true); |
||||
tw.reset(new RevTree[] { parent.getTree(), commit.getTree() }); |
||||
while (tw.next()) { |
||||
if (tw.getFileMode(1).getObjectType() != Constants.OBJ_BLOB) |
||||
continue; |
||||
|
||||
byte[] oldImage; |
||||
if (tw.getFileMode(0).getObjectType() == Constants.OBJ_BLOB) |
||||
oldImage = openBlob(0); |
||||
else |
||||
oldImage = new byte[0]; |
||||
|
||||
EditList edits = MyersDiff.INSTANCE.diff( |
||||
RawTextComparator.DEFAULT, new RawText(oldImage), |
||||
new RawText(openBlob(1))); |
||||
for (Edit e : edits) |
||||
addedLines += e.getEndB() - e.getBeginB(); |
||||
} |
||||
|
||||
} else { // no parents, everything is an addition
|
||||
tw.setFilter(TreeFilter.ALL); |
||||
tw.setRecursive(true); |
||||
tw.reset(commit.getTree()); |
||||
while (tw.next()) { |
||||
if (tw.getFileMode(0).getObjectType() == Constants.OBJ_BLOB) { |
||||
byte[] buf = openBlob(0); |
||||
for (int ptr = 0; ptr < buf.length;) { |
||||
ptr = RawParseUtils.nextLF(buf, ptr); |
||||
addedLines++; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (addedLines < 0) |
||||
throw new IOException(MessageFormat.format(IpLogText.get().incorrectlyScanned, commit.name())); |
||||
if (1 == addedLines) |
||||
item.setSize("+1 line"); |
||||
else |
||||
item.setSize("+" + addedLines + " lines"); |
||||
contributor.add(item); |
||||
} |
||||
} |
||||
|
||||
private byte[] openBlob(int side) throws IOException { |
||||
tw.getObjectId(idbuf, side); |
||||
return curs.open(idbuf, Constants.OBJ_BLOB).getCachedBytes(); |
||||
} |
||||
|
||||
/** |
||||
* Dump the scanned information into an XML file. |
||||
* |
||||
* @param out |
||||
* the file stream to write to. The caller is responsible for |
||||
* closing the stream upon completion. |
||||
* @throws IOException |
||||
* the stream cannot be written. |
||||
*/ |
||||
public void writeTo(OutputStream out) throws IOException { |
||||
try { |
||||
TransformerFactory factory = TransformerFactory.newInstance(); |
||||
Transformer s = factory.newTransformer(); |
||||
s.setOutputProperty(OutputKeys.ENCODING, characterEncoding); |
||||
s.setOutputProperty(OutputKeys.METHOD, "xml"); |
||||
s.setOutputProperty(OutputKeys.INDENT, "yes"); |
||||
s.setOutputProperty(INDENT, "2"); |
||||
s.transform(new DOMSource(toXML()), new StreamResult(out)); |
||||
} catch (ParserConfigurationException e) { |
||||
IOException err = new IOException(IpLogText.get().cannotSerializeXML); |
||||
err.initCause(e); |
||||
throw err; |
||||
|
||||
} catch (TransformerConfigurationException e) { |
||||
IOException err = new IOException(IpLogText.get().cannotSerializeXML); |
||||
err.initCause(e); |
||||
throw err; |
||||
|
||||
} catch (TransformerException e) { |
||||
IOException err = new IOException(IpLogText.get().cannotSerializeXML); |
||||
err.initCause(e); |
||||
throw err; |
||||
} |
||||
} |
||||
|
||||
private Document toXML() throws ParserConfigurationException { |
||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); |
||||
factory.setNamespaceAware(true); |
||||
doc = factory.newDocumentBuilder().newDocument(); |
||||
|
||||
Element root = createElement("iplog"); |
||||
doc.appendChild(root); |
||||
|
||||
if (projects.size() == 1) { |
||||
Project soleProject = projects.values().iterator().next(); |
||||
root.setAttribute("name", soleProject.getID()); |
||||
} |
||||
|
||||
Set<String> licenses = new TreeSet<String>(); |
||||
for (Project project : sort(projects, Project.COMPARATOR)) { |
||||
root.appendChild(createProject(project)); |
||||
licenses.addAll(project.getLicenses()); |
||||
} |
||||
|
||||
if (!consumedProjects.isEmpty()) |
||||
appendBlankLine(root); |
||||
for (Project project : sort(consumedProjects, Project.COMPARATOR)) { |
||||
root.appendChild(createConsumes(project)); |
||||
licenses.addAll(project.getLicenses()); |
||||
} |
||||
|
||||
for (RevCommit c : sort(commits)) |
||||
root.appendChild(createCommitMeta(c)); |
||||
|
||||
if (licenses.size() > 1) |
||||
appendBlankLine(root); |
||||
for (String name : sort(licenses)) |
||||
root.appendChild(createLicense(name)); |
||||
|
||||
if (!cqs.isEmpty()) |
||||
appendBlankLine(root); |
||||
for (CQ cq : sort(cqs, CQ.COMPARATOR)) |
||||
root.appendChild(createCQ(cq)); |
||||
|
||||
if (!committersByEmail.isEmpty()) |
||||
appendBlankLine(root); |
||||
for (Committer committer : sort(committersById, Committer.COMPARATOR)) |
||||
root.appendChild(createCommitter(committer)); |
||||
|
||||
for (Contributor c : sort(contributorsByName, Contributor.COMPARATOR)) { |
||||
appendBlankLine(root); |
||||
root.appendChild(createContributor(c)); |
||||
} |
||||
|
||||
return doc; |
||||
} |
||||
|
||||
private void appendBlankLine(Element root) { |
||||
root.appendChild(doc.createTextNode("\n\n ")); |
||||
} |
||||
|
||||
private Element createProject(Project p) { |
||||
Element project = createElement("project"); |
||||
populateProjectType(p, project); |
||||
return project; |
||||
} |
||||
|
||||
private Element createConsumes(Project p) { |
||||
Element project = createElement("consumes"); |
||||
populateProjectType(p, project); |
||||
return project; |
||||
} |
||||
|
||||
private static void populateProjectType(Project p, Element project) { |
||||
required(project, "id", p.getID()); |
||||
required(project, "name", p.getName()); |
||||
optional(project, "comments", p.getComments()); |
||||
optional(project, "version", p.getVersion()); |
||||
} |
||||
|
||||
private Element createCommitMeta(RevCommit c) { |
||||
Element meta = createElement("meta"); |
||||
required(meta, "key", "git-commit"); |
||||
required(meta, "value", c.name()); |
||||
return meta; |
||||
} |
||||
|
||||
private Element createLicense(String name) { |
||||
Element license = createElement("license"); |
||||
required(license, "id", name); |
||||
optional(license, "description", null); |
||||
optional(license, "comments", null); |
||||
return license; |
||||
} |
||||
|
||||
private Element createCQ(CQ cq) { |
||||
Element r = createElement("cq"); |
||||
required(r, "id", Long.toString(cq.getID())); |
||||
required(r, "description", cq.getDescription()); |
||||
optional(r, "license", cq.getLicense()); |
||||
optional(r, "use", cq.getUse()); |
||||
optional(r, "state", mapCQState(cq.getState())); |
||||
optional(r, "comments", cq.getComments()); |
||||
return r; |
||||
} |
||||
|
||||
private static String mapCQState(String state) { |
||||
// "approved" CQs shall be listed as "active" in the iplog
|
||||
if (state.equals("approved")) |
||||
return "active"; |
||||
return state; |
||||
} |
||||
|
||||
private Element createCommitter(Committer who) { |
||||
Element r = createElement("committer"); |
||||
required(r, "id", who.getID()); |
||||
required(r, "firstName", who.getFirstName()); |
||||
required(r, "lastName", who.getLastName()); |
||||
optional(r, "affiliation", who.getAffiliation()); |
||||
required(r, "active", Boolean.toString(who.isActive())); |
||||
required(r, "hasCommits", Boolean.toString(who.hasCommits())); |
||||
optional(r, "comments", who.getComments()); |
||||
return r; |
||||
} |
||||
|
||||
private Element createContributor(Contributor c) { |
||||
Element r = createElement("contributor"); |
||||
required(r, "id", c.getID()); |
||||
required(r, "name", c.getName()); |
||||
|
||||
for (SingleContribution s : sort(c.getContributions(), |
||||
SingleContribution.COMPARATOR)) |
||||
r.appendChild(createContribution(s)); |
||||
|
||||
return r; |
||||
} |
||||
|
||||
private Element createContribution(SingleContribution s) { |
||||
Element r = createElement("contribution"); |
||||
required(r, "id", s.getID()); |
||||
required(r, "description", s.getSummary()); |
||||
required(r, "size", s.getSize()); |
||||
if (reviewUrl != null) |
||||
optional(r, "url", reviewUrl + s.getID()); |
||||
return r; |
||||
} |
||||
|
||||
private Element createElement(String name) { |
||||
return doc.createElementNS(IPLOG_NS, IPLOG_PFX + name); |
||||
} |
||||
|
||||
private static void required(Element r, String name, String value) { |
||||
if (value == null) |
||||
value = ""; |
||||
r.setAttribute(name, value); |
||||
} |
||||
|
||||
private static void optional(Element r, String name, String value) { |
||||
if (value != null && value.length() > 0) |
||||
r.setAttribute(name, value); |
||||
} |
||||
|
||||
private static <T, Q extends Comparator<T>> Iterable<T> sort( |
||||
Collection<T> objs, Q cmp) { |
||||
ArrayList<T> sorted = new ArrayList<T>(objs); |
||||
Collections.sort(sorted, cmp); |
||||
return sorted; |
||||
} |
||||
|
||||
private static <T, Q extends Comparator<T>> Iterable<T> sort( |
||||
Map<?, T> objs, Q cmp) { |
||||
return sort(objs.values(), cmp); |
||||
} |
||||
|
||||
@SuppressWarnings("unchecked") |
||||
private static <T extends Comparable> Iterable<T> sort(Collection<T> objs) { |
||||
ArrayList<T> sorted = new ArrayList<T>(objs); |
||||
Collections.sort(sorted); |
||||
return sorted; |
||||
} |
||||
} |
@ -1,241 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.net.URL; |
||||
import java.text.MessageFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.Collection; |
||||
import java.util.Collections; |
||||
import java.util.Comparator; |
||||
import java.util.HashSet; |
||||
import java.util.List; |
||||
import java.util.Set; |
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException; |
||||
import org.eclipse.jgit.lib.Config; |
||||
import org.eclipse.jgit.lib.Constants; |
||||
import org.eclipse.jgit.lib.ObjectId; |
||||
import org.eclipse.jgit.storage.file.FileBasedConfig; |
||||
import org.eclipse.jgit.storage.file.LockFile; |
||||
import org.eclipse.jgit.util.FS; |
||||
import org.eclipse.jgit.util.FileUtils; |
||||
|
||||
/** |
||||
* Manages the {@code .eclipse_iplog} file in a project. |
||||
*/ |
||||
public class IpLogMeta { |
||||
/** Default name of the {@code .eclipse_iplog} file. */ |
||||
public static final String IPLOG_CONFIG_FILE = ".eclipse_iplog"; |
||||
|
||||
private static final String S_PROJECT = "project"; |
||||
|
||||
private static final String S_CQ = "CQ"; |
||||
|
||||
private static final String S_CONSUMES = "consumes"; |
||||
|
||||
private static final String S_REVIEW = "review"; |
||||
|
||||
private static final String K_URL = "url"; |
||||
|
||||
private static final String K_NAME = "name"; |
||||
|
||||
private static final String K_VERSION = "version"; |
||||
|
||||
private static final String K_COMMENTS = "comments"; |
||||
|
||||
private static final String K_SKIP_COMMIT = "skipCommit"; |
||||
|
||||
private static final String K_LICENSE = "license"; |
||||
|
||||
private static final String K_DESCRIPTION = "description"; |
||||
|
||||
private static final String K_USE = "use"; |
||||
|
||||
private static final String K_STATE = "state"; |
||||
|
||||
private List<Project> projects = new ArrayList<Project>(); |
||||
|
||||
private List<Project> consumedProjects = new ArrayList<Project>(); |
||||
|
||||
private Set<CQ> cqs = new HashSet<CQ>(); |
||||
|
||||
private String reviewUrl; |
||||
|
||||
List<Project> getProjects() { |
||||
return projects; |
||||
} |
||||
|
||||
List<Project> getConsumedProjects() { |
||||
return consumedProjects; |
||||
} |
||||
|
||||
Set<CQ> getCQs() { |
||||
return cqs; |
||||
} |
||||
|
||||
String getReviewUrl() { |
||||
return reviewUrl; |
||||
} |
||||
|
||||
void loadFrom(Config cfg) { |
||||
projects.clear(); |
||||
consumedProjects.clear(); |
||||
cqs.clear(); |
||||
|
||||
projects.addAll(parseProjects(cfg, S_PROJECT)); |
||||
consumedProjects.addAll(parseProjects(cfg, S_CONSUMES)); |
||||
|
||||
for (String id : cfg.getSubsections(S_CQ)) { |
||||
CQ cq = new CQ(Long.parseLong(id)); |
||||
cq.setDescription(cfg.getString(S_CQ, id, K_DESCRIPTION)); |
||||
cq.setLicense(cfg.getString(S_CQ, id, K_LICENSE)); |
||||
cq.setUse(cfg.getString(S_CQ, id, K_USE)); |
||||
cq.setState(cfg.getString(S_CQ, id, K_STATE)); |
||||
cq.setComments(cfg.getString(S_CQ, id, K_COMMENTS)); |
||||
cqs.add(cq); |
||||
} |
||||
|
||||
reviewUrl = cfg.getString(S_REVIEW, null, K_URL); |
||||
} |
||||
|
||||
private static List<Project> parseProjects(final Config cfg, |
||||
final String sectionName) { |
||||
final List<Project> dst = new ArrayList<Project>(); |
||||
for (String id : cfg.getSubsections(sectionName)) { |
||||
String name = cfg.getString(sectionName, id, K_NAME); |
||||
Project project = new Project(id, name); |
||||
project.setVersion(cfg.getString(sectionName, id, K_VERSION)); |
||||
project.setComments(cfg.getString(sectionName, id, K_COMMENTS)); |
||||
|
||||
for (String c : cfg.getStringList(sectionName, id, K_SKIP_COMMIT)) |
||||
project.addSkipCommit(ObjectId.fromString(c)); |
||||
for (String license : cfg.getStringList(sectionName, id, K_LICENSE)) |
||||
project.addLicense(license); |
||||
dst.add(project); |
||||
} |
||||
return dst; |
||||
} |
||||
|
||||
/** |
||||
* Query the Eclipse Foundation's IPzilla database for CQ records. |
||||
* <p> |
||||
* Updates the local {@code .eclipse_iplog} configuration file with current |
||||
* information by deleting CQs which are no longer relevant, and adding or |
||||
* updating any CQs which currently exist in the database. |
||||
* |
||||
* @param file |
||||
* local file to update with current CQ records. |
||||
* @param fs |
||||
* the file system abstraction which will be necessary to perform |
||||
* certain file system operations. |
||||
* @param base |
||||
* base https:// URL of the IPzilla server.
|
||||
* @param username |
||||
* username to login to IPzilla as. Must be a Bugzilla username |
||||
* of someone authorized to query the project's IPzilla records. |
||||
* @param password |
||||
* password for {@code username}. |
||||
* @throws IOException |
||||
* IPzilla cannot be queried, or the local file cannot be read |
||||
* from or written to. |
||||
* @throws ConfigInvalidException |
||||
* the local file cannot be read, as it is not a valid |
||||
* configuration file format. |
||||
*/ |
||||
public void syncCQs(File file, FS fs, URL base, String username, |
||||
String password) throws IOException, ConfigInvalidException { |
||||
FileUtils.mkdirs(file.getParentFile(), true); |
||||
|
||||
LockFile lf = new LockFile(file, fs); |
||||
if (!lf.lock()) |
||||
throw new IOException(MessageFormat.format(IpLogText.get().cannotLock, file)); |
||||
try { |
||||
FileBasedConfig cfg = new FileBasedConfig(file, fs); |
||||
cfg.load(); |
||||
loadFrom(cfg); |
||||
|
||||
IPZillaQuery ipzilla = new IPZillaQuery(base, username, password); |
||||
Set<CQ> current = ipzilla.getCQs(projects); |
||||
|
||||
for (CQ cq : sort(current, CQ.COMPARATOR)) { |
||||
String id = Long.toString(cq.getID()); |
||||
|
||||
set(cfg, S_CQ, id, K_DESCRIPTION, cq.getDescription()); |
||||
set(cfg, S_CQ, id, K_LICENSE, cq.getLicense()); |
||||
set(cfg, S_CQ, id, K_USE, cq.getUse()); |
||||
set(cfg, S_CQ, id, K_STATE, cq.getState()); |
||||
set(cfg, S_CQ, id, K_COMMENTS, cq.getComments()); |
||||
} |
||||
|
||||
for (CQ cq : cqs) { |
||||
if (!current.contains(cq)) |
||||
cfg.unsetSection(S_CQ, Long.toString(cq.getID())); |
||||
} |
||||
|
||||
lf.write(Constants.encode(cfg.toText())); |
||||
if (!lf.commit()) |
||||
throw new IOException(MessageFormat.format(IpLogText.get().cannotWrite, file)); |
||||
} finally { |
||||
lf.unlock(); |
||||
} |
||||
} |
||||
|
||||
private static void set(Config cfg, String section, String subsection, |
||||
String key, String value) { |
||||
if (value == null || "".equals(value)) |
||||
cfg.unset(section, subsection, key); |
||||
else |
||||
cfg.setString(section, subsection, key, value); |
||||
} |
||||
|
||||
private static <T, Q extends Comparator<T>> Iterable<T> sort( |
||||
Collection<T> objs, Q cmp) { |
||||
ArrayList<T> sorted = new ArrayList<T>(objs); |
||||
Collections.sort(sorted, cmp); |
||||
return sorted; |
||||
} |
||||
} |
@ -1,79 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Sasa Zivkov <sasa.zivkov@sap.com> |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import org.eclipse.jgit.nls.NLS; |
||||
import org.eclipse.jgit.nls.TranslationBundle; |
||||
|
||||
/** |
||||
* Translation bundle for JGit IP Log |
||||
*/ |
||||
public class IpLogText extends TranslationBundle { |
||||
|
||||
/** |
||||
* @return an instance of this translation bundle |
||||
*/ |
||||
public static IpLogText get() { |
||||
return NLS.getBundleFor(IpLogText.class); |
||||
} |
||||
|
||||
// @formatter:off
|
||||
/***/ public String CQString; |
||||
/***/ public String CSVParsingError; |
||||
/***/ public String cannotLock; |
||||
/***/ public String cannotSerializeXML; |
||||
/***/ public String cannotWrite; |
||||
/***/ public String committerString; |
||||
/***/ public String configurationFileInCommitHasNoProjectsDeclared; |
||||
/***/ public String configurationFileInCommitIsInvalid; |
||||
/***/ public String contributorString; |
||||
/***/ public String incorrectlyScanned; |
||||
/***/ public String invalidDate; |
||||
/***/ public String invalidURIFormat; |
||||
/***/ public String loginFailed; |
||||
/***/ public String pageTitleWas; |
||||
/***/ public String projectString; |
||||
/***/ public String queryFailed; |
||||
/***/ public String responseNotHTMLAsExpected; |
||||
} |
@ -1,134 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.text.MessageFormat; |
||||
import java.util.Collections; |
||||
import java.util.Comparator; |
||||
import java.util.Set; |
||||
import java.util.TreeSet; |
||||
|
||||
import org.eclipse.jgit.lib.AnyObjectId; |
||||
import org.eclipse.jgit.lib.ObjectId; |
||||
import org.eclipse.jgit.lib.ObjectIdSubclassMap; |
||||
|
||||
/** Description of a project. */ |
||||
class Project { |
||||
/** Sorts projects by unique identities. */ |
||||
static final Comparator<Project> COMPARATOR = new Comparator<Project>() { |
||||
public int compare(Project a, Project b) { |
||||
return a.getID().compareTo(b.getID()); |
||||
} |
||||
}; |
||||
|
||||
private final String id; |
||||
|
||||
private final String name; |
||||
|
||||
private String comments; |
||||
|
||||
private final Set<String> licenses = new TreeSet<String>(); |
||||
|
||||
private final ObjectIdSubclassMap<ObjectId> skipCommits = new ObjectIdSubclassMap<ObjectId>(); |
||||
|
||||
private String version; |
||||
|
||||
/** |
||||
* @param id |
||||
* @param name |
||||
*/ |
||||
Project(String id, String name) { |
||||
this.id = id; |
||||
this.name = name; |
||||
} |
||||
|
||||
/** @return unique identity of this project. */ |
||||
String getID() { |
||||
return id; |
||||
} |
||||
|
||||
/** @return name of this project. */ |
||||
String getName() { |
||||
return name; |
||||
} |
||||
|
||||
/** @return any additional comments about this project. */ |
||||
String getComments() { |
||||
return comments; |
||||
} |
||||
|
||||
void setComments(String comments) { |
||||
this.comments = comments; |
||||
} |
||||
|
||||
/** @return the licenses this project is released under. */ |
||||
Set<String> getLicenses() { |
||||
return Collections.unmodifiableSet(licenses); |
||||
} |
||||
|
||||
void addLicense(String licenseName) { |
||||
licenses.add(licenseName); |
||||
} |
||||
|
||||
void addSkipCommit(AnyObjectId commit) { |
||||
skipCommits.add(commit.copy()); |
||||
} |
||||
|
||||
boolean isSkippedCommit(AnyObjectId commit) { |
||||
return skipCommits.contains(commit); |
||||
} |
||||
|
||||
String getVersion() { |
||||
return version; |
||||
} |
||||
|
||||
void setVersion(String v) { |
||||
version = v; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return MessageFormat.format(IpLogText.get().projectString, getID(), getName()); |
||||
} |
||||
} |
@ -1,124 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.io.IOException; |
||||
import java.net.CookieHandler; |
||||
import java.net.URI; |
||||
import java.util.Collections; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* Dumb implementation of a CookieManager for the JRE. |
||||
* <p> |
||||
* Cookies are keyed only by the host name in the URI. Cookie attributes like |
||||
* domain and path are ignored to simplify the implementation. |
||||
* <p> |
||||
* If we are running on Java 6 or later we should favor using the standard |
||||
* {@code java.net.CookieManager} class instead. |
||||
*/ |
||||
public class SimpleCookieManager extends CookieHandler { |
||||
private Map<String, Map<String, String>> byHost = new HashMap<String, Map<String, String>>(); |
||||
|
||||
@Override |
||||
public Map<String, List<String>> get(URI uri, |
||||
Map<String, List<String>> requestHeaders) throws IOException { |
||||
String host = hostOf(uri); |
||||
|
||||
Map<String, String> map = byHost.get(host); |
||||
if (map == null || map.isEmpty()) |
||||
return requestHeaders; |
||||
|
||||
Map<String, List<String>> r = new HashMap<String, List<String>>(); |
||||
r.putAll(requestHeaders); |
||||
StringBuilder buf = new StringBuilder(); |
||||
for (Map.Entry<String, String> e : map.entrySet()) { |
||||
if (buf.length() > 0) |
||||
buf.append("; "); |
||||
buf.append(e.getKey()); |
||||
buf.append('='); |
||||
buf.append(e.getValue()); |
||||
} |
||||
r.put("Cookie", Collections.singletonList(buf.toString())); |
||||
return Collections.unmodifiableMap(r); |
||||
} |
||||
|
||||
@Override |
||||
public void put(URI uri, Map<String, List<String>> responseHeaders) |
||||
throws IOException { |
||||
List<String> list = responseHeaders.get("Set-Cookie"); |
||||
if (list == null || list.isEmpty()) { |
||||
return; |
||||
} |
||||
|
||||
String host = hostOf(uri); |
||||
Map<String, String> map = byHost.get(host); |
||||
if (map == null) { |
||||
map = new HashMap<String, String>(); |
||||
byHost.put(host, map); |
||||
} |
||||
|
||||
for (String hdr : list) { |
||||
String attributes[] = hdr.split(";"); |
||||
String nameValue = attributes[0].trim(); |
||||
int eq = nameValue.indexOf('='); |
||||
String name = nameValue.substring(0, eq); |
||||
String value = nameValue.substring(eq + 1); |
||||
|
||||
map.put(name, value); |
||||
} |
||||
} |
||||
|
||||
private static String hostOf(URI uri) { |
||||
StringBuilder key = new StringBuilder(); |
||||
key.append(uri.getScheme()); |
||||
key.append(':'); |
||||
key.append(uri.getHost()); |
||||
if (0 < uri.getPort()) |
||||
key.append(':' + uri.getPort()); |
||||
return key.toString(); |
||||
} |
||||
} |
@ -1,99 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.iplog; |
||||
|
||||
import java.util.Comparator; |
||||
import java.util.Date; |
||||
|
||||
/** A single contribution by a {@link Contributor}. */ |
||||
class SingleContribution { |
||||
/** Sorts contributors by their name first name, then last name. */ |
||||
public static final Comparator<SingleContribution> COMPARATOR = new Comparator<SingleContribution>() { |
||||
public int compare(SingleContribution a, SingleContribution b) { |
||||
return a.created.compareTo(b.created); |
||||
} |
||||
}; |
||||
|
||||
private final String id; |
||||
|
||||
private String summary; |
||||
|
||||
private Date created; |
||||
|
||||
private String size; |
||||
|
||||
/** |
||||
* @param id |
||||
* @param created |
||||
* @param summary |
||||
*/ |
||||
SingleContribution(String id, Date created, String summary) { |
||||
this.id = id; |
||||
this.summary = summary; |
||||
this.created = created; |
||||
} |
||||
|
||||
/** @return unique identity of the contribution. */ |
||||
String getID() { |
||||
return id; |
||||
} |
||||
|
||||
/** @return date the contribution was created. */ |
||||
Date getCreated() { |
||||
return created; |
||||
} |
||||
|
||||
/** @return summary of the contribution. */ |
||||
String getSummary() { |
||||
return summary; |
||||
} |
||||
|
||||
String getSize() { |
||||
return size; |
||||
} |
||||
|
||||
void setSize(String sz) { |
||||
size = sz; |
||||
} |
||||
} |
@ -1,22 +0,0 @@
|
||||
# Query for Gerrit Code Review gsql to produce the .git/gerrit_committers |
||||
# file for a project. Needing to do this manually is a horrible hack. |
||||
|
||||
SELECT a.account_id, |
||||
u.external_id, |
||||
a.full_name, |
||||
b.email_address, |
||||
r.added_on, |
||||
r.removed_on |
||||
FROM accounts a, |
||||
account_external_ids b, |
||||
account_groups g, |
||||
account_group_members_audit r, |
||||
account_external_ids u |
||||
WHERE a.account_id = b.account_id |
||||
AND b.email_address IS NOT NULL |
||||
AND r.account_id = a.account_id |
||||
AND r.group_id = g.group_id |
||||
AND u.account_id = a.account_id |
||||
AND u.external_id like 'username:%' |
||||
AND g.name = 'technology.jgit-committers' |
||||
ORDER BY a.full_name, r.added_on; |
@ -1,2 +0,0 @@
|
||||
1 | username:spearce | Shawn Pearce | sop@google.com | 2009-09-29 16:47:03.0 | NULL |
||||
1 | username:spearce | Shawn Pearce | spearce@spearce.org | 2009-09-29 16:47:03.0 | NULL |
@ -1,121 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.pgm.eclipse; |
||||
|
||||
import java.io.File; |
||||
import java.io.OutputStream; |
||||
import java.net.CookieHandler; |
||||
import java.text.MessageFormat; |
||||
|
||||
import org.eclipse.jgit.iplog.IpLogGenerator; |
||||
import org.eclipse.jgit.iplog.SimpleCookieManager; |
||||
import org.eclipse.jgit.lib.Constants; |
||||
import org.eclipse.jgit.lib.ObjectId; |
||||
import org.eclipse.jgit.pgm.CLIText; |
||||
import org.eclipse.jgit.pgm.Command; |
||||
import org.eclipse.jgit.pgm.TextBuiltin; |
||||
import org.eclipse.jgit.revwalk.RevObject; |
||||
import org.eclipse.jgit.revwalk.RevTag; |
||||
import org.eclipse.jgit.revwalk.RevWalk; |
||||
import org.eclipse.jgit.storage.file.LockFile; |
||||
import org.eclipse.jgit.util.FileUtils; |
||||
import org.kohsuke.args4j.Argument; |
||||
import org.kohsuke.args4j.Option; |
||||
|
||||
@Command(name = "eclipse-iplog", common = false, usage = "usage_produceAnEclipseIPLog") |
||||
class Iplog extends TextBuiltin { |
||||
@Option(name = "--version", aliases = { "-r" }, metaVar = "metaVar_version", usage = "usage_symbolicVersionForTheProject") |
||||
private String version; |
||||
|
||||
@Option(name = "--output", aliases = { "-o" }, metaVar = "metaVar_file", usage = "usage_outputFile") |
||||
private File output; |
||||
|
||||
@Argument(index = 0, metaVar = "metaVar_commitOrTag") |
||||
private ObjectId commitId; |
||||
|
||||
@Override |
||||
protected void run() throws Exception { |
||||
if (CookieHandler.getDefault() == null) |
||||
CookieHandler.setDefault(new SimpleCookieManager()); |
||||
|
||||
final IpLogGenerator log = new IpLogGenerator(); |
||||
|
||||
if (commitId == null) { |
||||
System.err.println(MessageFormat.format( |
||||
CLIText.get().warningNoCommitGivenOnCommandLine, Constants.HEAD)); |
||||
commitId = db.resolve(Constants.HEAD); |
||||
} |
||||
|
||||
final RevWalk rw = new RevWalk(db); |
||||
final RevObject start = rw.parseAny(commitId); |
||||
if (version == null && start instanceof RevTag) |
||||
version = ((RevTag) start).getTagName(); |
||||
else if (version == null) |
||||
throw die(MessageFormat.format(CLIText.get().notATagVersionIsRequired, start.name())); |
||||
|
||||
log.scan(db, rw.parseCommit(start), version); |
||||
|
||||
if (output != null) { |
||||
FileUtils.mkdirs(output.getParentFile(), true); |
||||
LockFile lf = new LockFile(output, db.getFS()); |
||||
if (!lf.lock()) |
||||
throw die(MessageFormat.format(CLIText.get().cannotLock, output)); |
||||
try { |
||||
OutputStream os = lf.getOutputStream(); |
||||
try { |
||||
log.writeTo(os); |
||||
} finally { |
||||
os.close(); |
||||
} |
||||
if (!lf.commit()) |
||||
throw die(MessageFormat.format(CLIText.get().cannotWrite, output)); |
||||
} finally { |
||||
lf.unlock(); |
||||
} |
||||
} else { |
||||
log.writeTo(outs); |
||||
outs.flush(); |
||||
} |
||||
} |
||||
} |
@ -1,99 +0,0 @@
|
||||
/* |
||||
* Copyright (C) 2010, Google Inc. |
||||
* and other copyright owners as documented in the project's IP log. |
||||
* |
||||
* This program and the accompanying materials are made available |
||||
* under the terms of the Eclipse Distribution License v1.0 which |
||||
* accompanies this distribution, is reproduced below, and is |
||||
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||
* |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or |
||||
* without modification, are permitted provided that the following |
||||
* conditions are met: |
||||
* |
||||
* - Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* |
||||
* - Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following |
||||
* disclaimer in the documentation and/or other materials provided |
||||
* with the distribution. |
||||
* |
||||
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||
* names of its contributors may be used to endorse or promote |
||||
* products derived from this software without specific prior |
||||
* written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
package org.eclipse.jgit.pgm.eclipse; |
||||
|
||||
import java.io.File; |
||||
import java.net.Authenticator; |
||||
import java.net.CookieHandler; |
||||
import java.net.PasswordAuthentication; |
||||
import java.net.URL; |
||||
|
||||
import org.eclipse.jgit.iplog.IpLogMeta; |
||||
import org.eclipse.jgit.iplog.SimpleCookieManager; |
||||
import org.eclipse.jgit.pgm.CLIText; |
||||
import org.eclipse.jgit.pgm.Command; |
||||
import org.eclipse.jgit.pgm.TextBuiltin; |
||||
import org.kohsuke.args4j.Option; |
||||
|
||||
@Command(name = "eclipse-ipzilla", common = false, usage = "usage_synchronizeIPZillaData") |
||||
class Ipzilla extends TextBuiltin { |
||||
@Option(name = "--url", metaVar = "metaVar_url", usage = "usage_IPZillaURL") |
||||
private String url = "https://dev.eclipse.org/ipzilla/"; //$NON-NLS-1$
|
||||
|
||||
@Option(name = "--username", metaVar = "metaVar_user", usage = "usage_IPZillaUsername") |
||||
private String username; |
||||
|
||||
@Option(name = "--password", metaVar = "metaVar_pass", usage = "usage_IPZillaPassword") |
||||
private String password; |
||||
|
||||
@Option(name = "--file", aliases = { "-f" }, metaVar = "metaVar_file", usage = "usage_inputOutputFile") |
||||
private File output; |
||||
|
||||
@Override |
||||
protected void run() throws Exception { |
||||
if (CookieHandler.getDefault() == null) |
||||
CookieHandler.setDefault(new SimpleCookieManager()); |
||||
|
||||
final URL ipzilla = new URL(url); |
||||
if (username == null) { |
||||
final PasswordAuthentication auth = Authenticator |
||||
.requestPasswordAuthentication(ipzilla.getHost(), //
|
||||
null, //
|
||||
ipzilla.getPort(), //
|
||||
ipzilla.getProtocol(), //
|
||||
CLIText.get().IPZillaPasswordPrompt, //
|
||||
ipzilla.getProtocol(), //
|
||||
ipzilla, //
|
||||
Authenticator.RequestorType.SERVER); |
||||
username = auth.getUserName(); |
||||
password = new String(auth.getPassword()); |
||||
} |
||||
|
||||
if (output == null) |
||||
output = new File(db.getWorkTree(), IpLogMeta.IPLOG_CONFIG_FILE); |
||||
|
||||
IpLogMeta meta = new IpLogMeta(); |
||||
meta.syncCQs(output, db.getFS(), ipzilla, username, password); |
||||
} |
||||
} |
Loading…
Reference in new issue