Re: how to compare an exported file (or set of files) against the repository?
On Wed, 05 Oct 2011, Konstantin Kolinko wrote: Can diff -u command take input from stdout? From stdin? Yes, in all diff implementations I have seen on unix-like systems. In answer to the original question, I suggest this approach: parse the output from svn log -q -r 1:HEAD $URL to get a list of revision numbers in which the URL was modified. For each such revision number, save the output from svn cat -r $REVISION $URL | diff -U3 - $FILE Find the smallest of those saved diff outputs, and it probably corresponds to the version that was originally checked out. --apb (Alan Barrett)
RE: how to compare an exported file (or set of files) against the repository?
Unless you exported multiple revisions, you shouldn't need more than a few positive matches to determine the revision. First, compare the tree structure against the repository. You'll want to avoid researching moved files, and this will help you narrow down your search. Second, 'svn export' seems to preserve timestamps on the exported files. You can check 'svn log' for a matching timestamp for that file. Then once you have enough fingerprints to id the export revision, you can do a generic tree comparison to find changed and/or moved files. -Original Message- From: Mertens, Bram [mailto:merte...@mazdaeur.com] Is this possible without looping through all the revisions and calculating checksums? The problem with appraoch besides the time it would take is that it would obviously not catch files that are not 100% identical to the files in that revision. Thanks in advance for any pointer that would help in this.
Re: how to compare an exported file (or set of files) against the repository?
Guten Tag Mertens, Bram, am Mittwoch, 5. Oktober 2011 um 14:49 schrieben Sie: I would like to find out: a) what revision these files are from You can't, even with comparing checksums or stuff like that you would only get any revisions where the files are the same. But you can't tell when the files were exported among your revisions. b) what changes have been made to it that may not be in the repository? Check out a working copy and copy the files over. Mit freundlichen Grüßen, Thorsten Schöning -- Thorsten Schöning AM-SoFT IT-Systeme - Hameln | Potsdam | Leipzig Telefon: Potsdam: 0331-743881-0 E-Mail: tschoen...@am-soft.de Web: http://www.am-soft.de AM-SoFT GmbH IT-Systeme, Konsumhof 1-5, 14482 Potsdam Amtsgericht Potsdam HRB 21278 P, Geschäftsführer: Andreas Muchow
Re: how to compare an exported file (or set of files) against the repository?
I'm a bit surprised that 'svn info URL/to/file' does not print the checksum of the file, even when the filesystem backend has the checksum stored and doesn't need to calculate it on demand. Mertens, Bram wrote on Wed, Oct 05, 2011 at 14:49:35 +0200: Hi, I have been unable to find an answer to this in the FAQ or the mailing list archives. I found one question that appears to be similar to what I'm trying to achieve but it did not contain a reply that solves my problem. I've got a set of files that were exported from a repository some time ago. The files have been moved around and some have been edited since. I would like to find out: a) what revision these files are from and b) what changes have been made to it that may not be in the repository? Is this possible without looping through all the revisions and calculating checksums? The problem with appraoch besides the time it would take is that it would obviously not catch files that are not 100% identical to the files in that revision. Thanks in advance for any pointer that would help in this. Bram Mazda Motor Logistics Europe NV, Blaasveldstraat 162, B-2830 Willebroek VAT BE 0406.024.281, RPR Mechelen, ING 310-0092504-52, IBAN : BE64 3100 0925 0452, SWIFT : BBRUBEBB
Re: how to compare an exported file (or set of files) against the repository?
Am 05.10.2011 14:49, schrieb Mertens, Bram: I have been unable to find an answer to this in the FAQ or the mailing list archives. I found one question that appears to be similar to what I'm trying to achieve but it did not contain a reply that solves my problem. I haven't found the need for that yet, even though I'm prepared (see below) for the situation. I've got a set of files that were exported from a repository some time ago. The files have been moved around and some have been edited since. I would like to find out: a) what revision these files are from and There are so-called keywords, which SVN can be made to replace in text files. You can for example tell it to fill in the URL and revision a file is checked out from. This can be used to attach some metadata to an exported source tree. Of course that doesn't help you know, unless someone already prepared for this case. Note that the revision of a file doesn't change if you change a different file, so it can't give you _The_ revision of the source tree. OTOH, there is no guarantee that you don't have an export from a mixed-revision working copy. b) changes have been made to it that may not be in the repository? Find out where this was exported from, and check out that revision. Copy the export on top of it and compare, or use a recursive tree comparison utility. Is this possible without looping through all the revisions and calculating checksums? The problem with appraoch besides the time it would take is that it would obviously not catch files that are not 100% identical to the files in that revision. If the source tree contains files from several different revisions, that will be the only (hard) way to go. However, I guess you can expect that the export was made from one revision. If you know the history of the according project a bit, you might be able to find the approximate revision it was checked out and from there search for the exact revision. Another hint might be hidden in modification timestamps. BTW: The most efficient way is to check out an approximate revision and then use svn up -r ... to move to the next revision quickly. In particular you shouldn't use export instead of an incremental update. Good luck! Uli ** Domino Laser GmbH, Fangdieckstraße 75a, 22547 Hamburg, Deutschland Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932 ** Visit our website at http://www.dominolaser.com ** Diese E-Mail einschließlich sämtlicher Anhänge ist nur für den Adressaten bestimmt und kann vertrauliche Informationen enthalten. Bitte benachrichtigen Sie den Absender umgehend, falls Sie nicht der beabsichtigte Empfänger sein sollten. Die E-Mail ist in diesem Fall zu löschen und darf weder gelesen, weitergeleitet, veröffentlicht oder anderweitig benutzt werden. E-Mails können durch Dritte gelesen werden und Viren sowie nichtautorisierte Änderungen enthalten. Domino Laser GmbH ist für diese Folgen nicht verantwortlich. **
RE: how to compare an exported file (or set of files) against the repository?
This procedure could be easily automated by a stupid script that does something like: for REV in seq 0 NEWESTREV; do svn up -r REV cp updated-file repos-file if [ -z `svn diff` ]; then echo found candidate rev $REV!; fi svn revert . done JMTC, D. -Original Message- From: Ulrich Eckhardt [mailto:ulrich.eckha...@dominolaser.com] Sent: Wednesday, October 05, 2011 3:38 PM To: users@subversion.apache.org Subject: Re: how to compare an exported file (or set of files) against the repository? Am 05.10.2011 14:49, schrieb Mertens, Bram: I have been unable to find an answer to this in the FAQ or the mailing list archives. I found one question that appears to be similar to what I'm trying to achieve but it did not contain a reply that solves my problem. I haven't found the need for that yet, even though I'm prepared (see below) for the situation. I've got a set of files that were exported from a repository some time ago. The files have been moved around and some have been edited since. I would like to find out: a) what revision these files are from and There are so-called keywords, which SVN can be made to replace in text files. You can for example tell it to fill in the URL and revision a file is checked out from. This can be used to attach some metadata to an exported source tree. Of course that doesn't help you know, unless someone already prepared for this case. Note that the revision of a file doesn't change if you change a different file, so it can't give you _The_ revision of the source tree. OTOH, there is no guarantee that you don't have an export from a mixed-revision working copy. b) changes have been made to it that may not be in the repository? Find out where this was exported from, and check out that revision. Copy the export on top of it and compare, or use a recursive tree comparison utility. Is this possible without looping through all the revisions and calculating checksums? The problem with appraoch besides the time it would take is that it would obviously not catch files that are not 100% identical to the files in that revision. If the source tree contains files from several different revisions, that will be the only (hard) way to go. However, I guess you can expect that the export was made from one revision. If you know the history of the according project a bit, you might be able to find the approximate revision it was checked out and from there search for the exact revision. Another hint might be hidden in modification timestamps. BTW: The most efficient way is to check out an approximate revision and then use svn up -r ... to move to the next revision quickly. In particular you shouldn't use export instead of an incremental update. Good luck! Uli *** *** Domino Laser GmbH, Fangdieckstraße 75a, 22547 Hamburg, Deutschland Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932 *** *** Visit our website at http://www.dominolaser.com *** *** Diese E-Mail einschließlich sämtlicher Anhänge ist nur für den Adressaten bestimmt und kann vertrauliche Informationen enthalten. Bitte benachrichtigen Sie den Absender umgehend, falls Sie nicht der beabsichtigte Empfänger sein sollten. Die E-Mail ist in diesem Fall zu löschen und darf weder gelesen, weitergeleitet, veröffentlicht oder anderweitig benutzt werden. E-Mails können durch Dritte gelesen werden und Viren sowie nichtautorisierte Änderungen enthalten. Domino Laser GmbH ist für diese Folgen nicht verantwortlich. *** ***
RE: how to compare an exported file (or set of files) against the repository?
Mazda Motor Logistics Europe NV, Blaasveldstraat 162, B-2830 Willebroek VAT BE 0406.024.281, RPR Mechelen, ING 310-0092504-52, IBAN : BE64 3100 0925 0452, SWIFT : BBRUBEBB -Original Message- From: Ulrich Eckhardt [mailto:ulrich.eckha...@dominolaser.com] Sent: woensdag 5 oktober 2011 15:38 To: users@subversion.apache.org Subject: Re: how to compare an exported file (or set of files) against the repository? Am 05.10.2011 14:49, schrieb Mertens, Bram: I have been unable to find an answer to this in the FAQ or the mailing list archives. I found one question that appears to be similar to what I'm trying to achieve but it did not contain a reply that solves my problem. I haven't found the need for that yet, even though I'm prepared (see below) for the situation. I've got a set of files that were exported from a repository some time ago. The files have been moved around and some have been edited since. I would like to find out: a) what revision these files are from and There are so-called keywords, which SVN can be made to replace in text files. You can for example tell it to fill in the URL and revision a file is checked out from. This can be used to attach some metadata to an exported source tree. Of course that doesn't help you know, unless someone already prepared for this case. Note that the revision of a file doesn't change if you change a different file, so it can't give you _The_ revision of the source tree. OTOH, there is no guarantee that you don't have an export from a mixed-revision working copy. Thx for this, but I am aware of this feature and should have mentioned that it is currently not being used (though I'll be changing that). b) changes have been made to it that may not be in the repository? Find out where this was exported from, and check out that revision. Copy the export on top of it and compare, or use a recursive tree comparison utility. Is this possible without looping through all the revisions and calculating checksums? The problem with appraoch besides the time it would take is that it would obviously not catch files that are not 100% identical to the files in that revision. If the source tree contains files from several different revisions, that will be the only (hard) way to go. However, I guess you can expect that the export was made from one revision. If you know the history of the according project a bit, you might be able to find the approximate revision it was checked out and from there search for the exact revision. Another hint might be hidden in modification timestamps. BTW: The most efficient way is to check out an approximate revision and then use svn up -r ... to move to the next revision quickly. In particular you shouldn't use export instead of an incremental update. Too bad there is no less complicated way of doing this but I guess I'll use a combination of the suggestions in this thread to accomplish what I need. If anyone has a better suggestion I'd like to hear about it still. Regards and thanks for all the feedback received so far. Bram
Re: how to compare an exported file (or set of files) against the repository?
2011/10/5 Dominik Psenner dpsen...@gmail.com: This procedure could be easily automated by a stupid script that does something like: for REV in seq 0 NEWESTREV; do svn up -r REV cp updated-file repos-file if [ -z `svn diff` ]; then echo found candidate rev $REV!; fi svn revert . done Can diff -u command take input from stdout? Its man page says If a FILE is `-', read standard input. If so, one could feed it from svn cat command. Just for record, there is --force flag for svn checkout command, that allows it to create a working copy over files that were exported. I think it should not overwrite files that has local changes, but have not verified whether that is true. Check out a working copy and copy the files over. +1 Best regards, Konstantin Kolinko