Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| versioncontrol:subversionmissing [2009/03/18 07:06] – DavidOBrien | versioncontrol:subversionmissing [2022/10/07 03:01] (current) – Move bakeoff stuff under a single namespace KubilayKocak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== This page describes some of the things I've found missing in Subversion, when coming from CVS: ===== | ===== This page describes some of the things I've found missing in Subversion, when coming from CVS: ===== | ||
| - There is no way using Subversion to diff a local change (" | - There is no way using Subversion to diff a local change (" | ||
| - | * With CVS I can do a MFC, fix the conflicts and compare with CURRENT by using; | + | * With CVS I can do an MFC, fix the conflicts and compare with CURRENT by using; |
| < | < | ||
| Line 19: | Line 19: | ||
| svn: Not all required revisions are specified | svn: Not all required revisions are specified | ||
| + | </ | ||
| + | |||
| + | Answer: Use the svn diff --old --new syntax: | ||
| + | |||
| + | < | ||
| + | $ cd / | ||
| + | $ svn diff --old cat.c --new ^/ | ||
| </ | </ | ||
| Line 39: | Line 46: | ||
| * '' | * '' | ||
| - | - Subversion does not let you copy-n-paste revision numbers from 'svn log': | + | - Subversion does not let you copy-n-paste revision numbers from ''%%svn log%%'': |
| + | * | ||
| < | < | ||
| Line 52: | Line 60: | ||
| </ | </ | ||
| - | This is a stupid as CVS is in that you cannot give its date output from 'cvs log' as-is as an argument to " | + | This is a stupid as CVS is in that you cannot give its date output from ''%%cvs log%%'' as-is as an argument to " |
| - | Sean C. Farley | + | |
| - | [Though I still think the Subversion parser need a clue-by-four.] | + | |
| - | - Even sillier is that if I checkout a tree and make several commits from within the tree, 'svn log' will not show them. An 'svn update' | + | - Even sillier is that if I checkout a tree and make several commits from within the tree, ''%%svn log%%'' will not show them. An ''%%svn update%%'' must be done first. |
| - Subversion does not automatically expand keywords. | - Subversion does not automatically expand keywords. | ||
| - | * One did not have to do anything to get '' | + | * One did not have to do anything to get '' |
| * | * | ||
| Line 87: | Line 94: | ||
| </ | </ | ||
| - | That wasn't very helpful in figuring out I had a tripple | + | That wasn't very helpful in figuring out I had a triple |
| - There is no option at not having base files in .svn. | - There is no option at not having base files in .svn. | ||
| * Thus you will always take up twice the disk space, and spend twice as long doing a check out or update than you need to be - if you're writing to NFS and your Subversion server is just as well, if not better, connected to the client system. | * Thus you will always take up twice the disk space, and spend twice as long doing a check out or update than you need to be - if you're writing to NFS and your Subversion server is just as well, if not better, connected to the client system. | ||
| - | - Subversion does not sort files in svn diff output alphabetically. | + | Answer: A workaround that offers a partial remedy is to check out a single working copy for the entire freebsd repository at depth empty: |
| - | | + | < |
| + | $ svn co --depth empty svn://svn.freebsd.org/base | ||
| + | $ cd base | ||
| + | </ | ||
| - | - The barren set of ' | + | and then update desired branches |
| < | < | ||
| - | svn diff --diff-cmd diff -x -u20 -c 99 foo.c}}} | + | $ svn up --depth infinity head |
| + | $ svn up --depth infinity releng/9.1 | ||
| + | </ | ||
| + | With Subversion 1.7, files that don't differ between branches now share the same pristine text base file in the .svn directory. | ||
| + | |||
| + | - Subversion does not sort files in '' | ||
| + | |||
| + | - I cannot figure out what '' | ||
| + | * It does not seem to give a combined log for the entire directory (or subtree) as I hoped it would. | ||
| + | |||
| + | - The barren set of ' | ||
| + | * | ||
| + | |||
| + | < | ||
| + | svn diff --diff-cmd diff -x -u9 -x -p -c 99 foo.c | ||
| + | </ | ||
| + | |||
| + | Even in the " | ||
| + | * | ||
| + | |||
| + | < | ||
| + | svn diff -x -p -c 99 foo.c | ||
| + | </ | ||
| + | |||
| + | Unfortunately, | ||
| + | (Well, you can set '' | ||
| + | |||
| + | Answer: This was fixed in 1.7.0. See the ' | ||
| + | |||
| + | - Why does Subversion bother to tell me the number of lines in a commit log message? | ||
| + | * | ||
| + | |||
| + | < | ||
| + | r111464 | deo | 2009-01-28 14:45:42 -0800 (Wed, 28 Jan 2009) | 2 lines | ||
| + | |||
| + | Merge blah into foo. | ||
| + | </ | ||
| + | |||
| + | I don't see the benefit in this output. | ||
| + | |||
| + | Answer: This was done to help tools that parse svn log output. See the cvsps problem where its log message parser fails if a CVS log message contains a log-message-separator line... | ||
| + | |||
| + | - Many Subversion commands bail out in processing their command-line arguments if the command operation cannot be accomplished on a particular file. | ||
| + | * | ||
| + | |||
| + | < | ||
| + | svn rm A B C | ||
| + | D A | ||
| + | svn: ' | ||
| + | </ | ||
| + | |||
| + | Oh!, maybe I need to use --force (e.g. to operate like 'rm -rf'). | ||
| + | * | ||
| + | |||
| + | < | ||
| + | svn rm --force A B C | ||
| + | D A | ||
| + | svn: ' | ||
| + | </ | ||
| + | |||
| + | Nope, same thing. | ||
| + | * | ||
| + | |||
| + | < | ||
| + | for F in * ; do svn propdel -q svn: | ||
| + | </ | ||
| + | |||
| + | The " | ||
| + | * | ||
| + | |||
| + | < | ||
| + | for F in *; do | ||
| + | svn propdel -q svn: | ||
| + | if [ $? -eq 0 ]; then echo "svn propdel svn: | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | Does not work as desired: | ||
| + | * | ||
| + | |||
| + | < | ||
| + | $ svn propdel svn: | ||
| + | svn: Attempting to delete nonexistent property ' | ||
| + | $ echo $? | ||
| + | 1 | ||
| + | $ svn propdel -q svn: | ||
| + | $ echo $? | ||
| + | 0 | ||
| </ | </ | ||