[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: 'reverse diff': diff between working copy and latest head on server ?

From: Yakov Lerner <iler.ml_at_gmail.com>
Date: Mon, 12 May 2008 14:52:49 +0200

On Mon, May 12, 2008 at 6:54 AM, Hari Kodungallur
<hkodungallur_at_gmail.com> wrote:
>
>
> On Sun, May 11, 2008 at 5:10 AM, Yakov Lerner <iler.ml_at_gmail.com> wrote:
> > How can I quickly generate diffs between working copy and latest state on
> > server (which is modified by checkins of other users) ?
> > Any quickly working script for that ?
> >
> > One apparent solution is to export to temp dir then run
> > 'diff -r --exclude .svn'. Is there faster solution ? Export+diff
> > solution is proportional to size of whole tree rather than size of diffs.
> >
>
>
> svn diff --old=<URL-to-repository> --new=<working-copy-dir>

When I do 'svn diff --old... --new...' it in the form that you
show, it shows local changes, but does not show repo checkins missing
in the local working dir. (If I do 'svn up', those checkins are updated.)

Do you know why 'svn diff --old=<URL-to-repository> --new=.' does not
show new repo checkins ?

The test script is below.
Yakov
------------- script svn-test-diff-to-repo --------------------
#!/bin/bash

# demo for the "diff to repository"

die() { echo 1>&2 "$*"; exit 10; }

set -x
REPO=/tmp/repo1
WRK1=/tmp/w1
WRK2=/tmp/w2
set +x

echo "Press Enter when ready to erase and re-create $REPO, $WRK1, $WRK2?"
read ANS

set -x
rm -rf $REPO $WRK1 $WRK2
svnadmin create $REPO || die Error
svn co file:///$REPO $WRK1 >/dev/null || die Error
svn co file:///$REPO $WRK2 >/dev/null || die Error

echo remote >$WRK2/remote || exit 1
svn add $WRK2/remote || exit 1
svn ci -m Changes --force-log --non-interactive $* || exit 1

echo local >$WRK1/local || die Error

ls -l $WRK1
ls -l $WRK2

set +x
echo "We want to see diff between $WRK1 ('our local workdir') and repository"
echo "NB repo contains new checkin 'remote' not present in $WRK1"
set -x

sleep 2 # operator is in suspense

svn diff --old=file:///$REPO --new=$WRK1
------------------------------- output of test script
-----------------------------
+ REPO=/tmp/repo1
+ WRK1=/tmp/w1
+ WRK2=/tmp/w2
+ set +x
Press Enter when ready to erase and re-create /tmp/repo1, /tmp/w1, /tmp/w2?

+ rm -rf /tmp/repo1 /tmp/w1 /tmp/w2
+ svnadmin create /tmp/repo1
+ svn co file:////tmp/repo1 /tmp/w1
+ svn co file:////tmp/repo1 /tmp/w2
+ echo remote
+ svn add /tmp/w2/remote
A /tmp/w2/remote
+ svn ci -m Changes --force-log --non-interactive
+ echo local
+ ls -l /tmp/w1
total 4
-rw-r--r-- 1 lerner lerner 6 May 12 15:33 local
+ ls -l /tmp/w2
total 4
-rw-r--r-- 1 lerner lerner 7 May 12 15:33 remote
+ set +x
We want to see diff between /tmp/w1 ('our local workdir') and repository
NB repo contains new checkin 'remote' not present in /tmp/w1
+ sleep 2
+ svn diff --old=file:////tmp/repo1 --new=/tmp/w1

^^^^^^^^^^ nb we expect file 'remote' to be reported but it is not reported
--------------------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-05-12 14:53:33 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.