<?xml version="1.0" encoding="UTF-8"?>
<!--
! CCPL HEADER START
!
! This work is licensed under the Creative Commons
! Attribution-NonCommercial-NoDerivs 3.0 Unported License.
! To view a copy of this license, visit
! http://creativecommons.org/licenses/by-nc-nd/3.0/
! or send a letter to Creative Commons, 444 Castro Street,
! Suite 900, Mountain View, California, 94041, USA.
!
! You can also obtain a copy of the license at
! trunk/opendj3/legal-notices/CC-BY-NC-ND.txt.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! If applicable, add the following below this CCPL HEADER, with the fields
! enclosed by brackets "[]" replaced with your own identifying information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CCPL HEADER END
!
! Copyright 2011-2012 ForgeRock AS
! Portions Copyright 2013 Jens Elkner
!
-->
<refentry xml:id="ldif-diff-1" xmlns="http://docbook.org/ns/docbook"
version="5.0" xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="common.xml" xpointer='xpointer(//info[@name="info"])'/>
<refmeta>
<refentrytitle><application>ldif-diff</application></refentrytitle>
<xi:include href="common.xml" xpointer='xpointer(//manvolnum[@name="v1m"])'/>
</refmeta>
<refnamediv>
<refname><application>ldif-diff</application></refname>
<refpurpose>compare small LDIF files</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>ldif-diff</command>
<arg>-O</arg>
<arg>-S</arg>
<arg>-r</arg>
<arg>-a <replaceable class="parameter">ignoreAttrFile</replaceable></arg>
<arg>-e <replaceable class="parameter">ignoreEntryFile</replaceable></arg>
<arg>-o <replaceable class="parameter">outfile</replaceable></arg>
<arg>-s <replaceable class="parameter">srcfile</replaceable></arg>
<arg>-t <replaceable class="parameter">targetfile</replaceable></arg>
<arg>--checkSchema</arg>
<xi:include href="common.xml"
xpointer='xpointer(//para[@name="s-general"]/*)'/>
</cmdsynopsis>
</refsynopsisdiv>
<refsection>
<title>Description</title>
<para>
This utility can be used to compare two LDIF files and report the differences
in LDIF format.
</para>
</refsection>
<refsection>
<title>Options</title>
<para>
The following options are supported.
</para>
<variablelist>
<varlistentry>
<term><option>-a, --ignoreAttrs</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
File containing a list of attributes to ignore when computing the difference.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--checkSchema</option></term>
<listitem>
<para>
Takes into account the syntax of the attributes as defined in the schema to make
the value comparison. The provided LDIF files must conform to the server schema.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-e, --ignoreEntries</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
File containing a list of entries (DN) to ignore when computing the difference.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-o, --outputLDIF</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
File to which the output should be written.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-O, --overwriteExisting</option></term>
<listitem>
<para>
Any existing output file should be overwritten rather than appending to it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-r, --useCompareResultCode</option></term>
<listitem>
<para>
Use the LDAP compare result as an exit code for reporting differences between
the two LDIF files.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s, --sourceLDIF</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
LDIF file to use as the source data.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-S, --singleValueChanges</option></term>
<listitem>
<para>
Each attribute-level change should be written as a separate modification per
attribute value rather than one modification per entry.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-t, --targetLDIF</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
LDIF file to use as the target data.
</para>
</listitem>
</varlistentry>
<xi:include href="common.xml"
xpointer='xpointer(//para[@name="l-general"]/*)'/>
</variablelist>
</refsection>
<refsection>
<title>Examples</title>
<informalexample>
<para>
The following example demonstrates use of the command with two small LDIF files.
</para>
<literallayout><prompt
>$ </prompt><command>cat /tmp/newuser.ldif</command></literallayout>
<screen>
dn: uid=newuser,ou=People,dc=example,dc=com
uid: newuser
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
cn: New User
sn: User
ou: People
mail: newuser@example.com
userPassword: changeme
</screen>
<literallayout><prompt
>$ </prompt><command>cat /tmp/neweruser.ldif</command></literallayout>
<screen>
dn: uid=newuser,ou=People,dc=example,dc=com
uid: newuser
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
cn: New User
sn: User
ou: People
mail: newuser@example.com
userPassword: secret12
description: A new description.
</screen>
<literallayout><prompt
>$ </prompt><command>ldif-diff -s /tmp/newuser.ldif -t /tmp/neweruser.ldif</command></literallayout>
<screen>
dn: uid=newuser,ou=People,dc=example,dc=com
changetype: modify
add: userPassword
userPassword: secret12
-
delete: userPassword
userPassword: changeme
-
add: description
description: A new description.
</screen>
</informalexample>
</refsection>
<xi:include href="common.xml" xpointer='xpointer(//refsection[@name="env"])'/>
<refsection>
<title>Exit Status</title>
<variablelist>
<varlistentry>
<term><errorcode>0</errorcode></term>
<listitem>
<para>The command completed successfully.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>5</errorcode></term>
<listitem>
<para>
The <option>-r</option> option was used, and no differences are reported.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>6</errorcode></term>
<listitem>
<para>
The <option>-r</option> option was used, and differences are reported.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>other</errorcode></term>
<listitem>
<para>An error occurred.</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<xi:include href="common.xml" xpointer='xpointer(//refsection[@name="seeAlso"])'/>
</refentry>