#include <apr.h>
#include <apr_pools.h>
#include <apr_file_io.h>
#include "svn_types.h"
#include "svn_error.h"
#include "svn_io.h"
#include "svn_version.h"
Go to the source code of this file.
Data Structures | |
struct | svn_diff_fns_t |
A vtable for reading data from the three datasources. More... | |
struct | svn_diff_output_fns_t |
A vtable for displaying (or consuming) differences between datasources. More... | |
Typedefs | |
typedef svn_diff_t | svn_diff_t |
An opaque type that represents a difference between either two or three datasources. | |
typedef enum svn_diff_datasource_e | svn_diff_datasource_e |
There are four types of datasources. | |
typedef svn_diff_fns_t | svn_diff_fns_t |
A vtable for reading data from the three datasources. | |
typedef svn_diff_output_fns_t | svn_diff_output_fns_t |
A vtable for displaying (or consuming) differences between datasources. | |
Enumerations | |
enum | svn_diff_datasource_e { svn_diff_datasource_original, svn_diff_datasource_modified, svn_diff_datasource_latest, svn_diff_datasource_ancestor } |
There are four types of datasources. More... | |
Functions | |
const svn_version_t * | svn_diff_version (void) |
| |
svn_error_t * | svn_diff_diff (svn_diff_t **diff, void *diff_baton, const svn_diff_fns_t *diff_fns, apr_pool_t *pool) |
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that represents a difference between an "original" and "modified" datasource. | |
svn_error_t * | svn_diff_diff3 (svn_diff_t **diff, void *diff_baton, const svn_diff_fns_t *diff_fns, apr_pool_t *pool) |
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that represents a difference between three datasources: "original", "modified", and "latest". | |
svn_error_t * | svn_diff_diff4 (svn_diff_t **diff, void *diff_baton, const svn_diff_fns_t *diff_fns, apr_pool_t *pool) |
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that represents a difference between two datasources: "original" and "latest", adjusted to become a full difference between "original", "modified" and "latest" using "ancestor". | |
svn_boolean_t | svn_diff_contains_conflicts (svn_diff_t *diff) |
Determine if a diff object contains conflicts. | |
svn_boolean_t | svn_diff_contains_diffs (svn_diff_t *diff) |
Determine if a diff object contains actual differences between the datasources. | |
svn_error_t * | svn_diff_output (svn_diff_t *diff, void *output_baton, const svn_diff_output_fns_t *output_fns) |
Given a vtable of output_fns/output_baton for consuming differences, output the differences in diff. | |
svn_error_t * | svn_diff_file_diff (svn_diff_t **diff, const char *original, const char *modified, apr_pool_t *pool) |
A convenience function to produce a diff between two files. | |
svn_error_t * | svn_diff_file_diff3 (svn_diff_t **diff, const char *original, const char *modified, const char *latest, apr_pool_t *pool) |
A convenience function to produce a diff between three files. | |
svn_error_t * | svn_diff_file_diff4 (svn_diff_t **diff, const char *original, const char *modified, const char *latest, const char *ancestor, apr_pool_t *pool) |
A convenience function to produce a diff between four files. | |
svn_error_t * | svn_diff_file_output_unified (svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *original_header, const char *modified_header, apr_pool_t *pool) |
A convenience function to produce unified diff output from the diff generated by svn_diff_file . | |
svn_error_t * | svn_diff_file_output_merge (svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *latest_path, const char *conflict_original, const char *conflict_modified, const char *conflict_latest, const char *conflict_separator, svn_boolean_t display_original_in_conflict, svn_boolean_t display_resolved_conflicts, apr_pool_t *pool) |
A convenience function to produce diff3 output from the diff generated by svn_diff3_file . |
This is an internalized library for performing contextual diffs between sources of data.
NOTE: this is different than Subversion's binary-diffing engine. That API lives in svn_delta.h
-- see the "text deltas" section. A "text delta" is way of representing precise binary diffs between strings of data. The Subversion client and server send text deltas to one another during updates and commits.
This API, however, is (or will be) used for performing *contextual* merges between files in the working copy. During an update or merge, 3-way file merging is needed. And 'svn diff' needs to show the differences between 2 files.
The nice thing about this API is that it's very general. It operates on any source of data (a "datasource") and calculates contextual differences on "tokens" within the data. In our particular usage, the datasources are files and the tokens are lines. But the possibilities are endless.
Definition in file svn_diff.h.
|
There are four types of datasources. In GNU diff3 terminology, the first three types correspond to the phrases "older", "mine", and "yours". |
|
A vtable for displaying (or consuming) differences between datasources. Differences, similarities, and conflicts are described by lining up "ranges" of data.
Note: these callbacks describe data ranges in units of "tokens". A "token" is whatever you've defined it to be in your datasource |
|
An opaque type that represents a difference between either two or three datasources.
This object is returned by Definition at line 76 of file svn_diff.h. |
|
There are four types of datasources. In GNU diff3 terminology, the first three types correspond to the phrases "older", "mine", and "yours".
Definition at line 83 of file svn_diff.h. |
|
Determine if a diff object contains conflicts.
If it does, return |
|
Determine if a diff object contains actual differences between the datasources.
If so, return |
|
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that represents a difference between an "original" and "modified" datasource. Do all allocation in pool. |
|
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that represents a difference between three datasources: "original", "modified", and "latest". Do all allocation in pool. |
|
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that represents a difference between two datasources: "original" and "latest", adjusted to become a full difference between "original", "modified" and "latest" using "ancestor". Do all allocation in pool. |
|
A convenience function to produce a diff between two files. Return a diff object in *diff (allocated from pool) that represents the difference between an original file and modified file. (The file arguments must be full paths to the files.) |
|
A convenience function to produce a diff between three files. Return a diff object in *diff (allocated from pool) that represents the difference between an original file, modified file, and latest file. (The file arguments must be full paths to the files.) |
|
A convenience function to produce a diff between four files. Return a diff object in *diff (allocated from pool) that represents the difference between an original file, modified file, latest and ancestor file. (The file arguments must be full paths to the files.) |
|
A convenience function to produce diff3 output from the diff generated by
Output a diff between original_path, modified_path and latest_path in merged format to output_file. Optionally supply conflict_modified, conflict_original, conflict_separator and/or conflict_latest to be displayed as conflict markers in the output. If conflict_original, conflict_modified, conflict_latest and/or conflict_separator is |
|
A convenience function to produce unified diff output from the diff generated by
Output a diff between original_path and modified_path in unified context diff format to output_file. Optionally supply original_header and/or modified_header to be displayed in the header of the output. If original_header or modified_header is |
|
Get libsvn_diff version information. |