You're not currently signed in.

Note

Please check the document and ask on the mailing list or irc before putting items to the list.

(SVK-1.06 won't install on any platform I've tried, two macs and a couple linux boxes. The failures in installation have to do with kludgy perl modules. Frankly, this svk thing blows. We will be using rsync to mirror repositories.)

- Did you try installing the binary installers for Mac OS X? tester

(Well, the precompiled SVK-1.06 for Windows worked just great for me. However - all the perl dependencies really gets to you. When trying to install svk on my OpenBSD machine (using the ports tree) it used 600Mb before filled the harddrive and aborting. I would sure as hell like prebuilt binaries (no matter that they are like 20 megs) for more platforms than Windows.)

AutrijusTang writes:

Here are recollections of my ramblings and rants on how much SVK sucks, based on daily usage in production environments. This is here because ChiaLiangKao claims that he is motivated by complaints. Being mainly motivated by thank-you mails, I cannot comprehend that claim, but I dutifully complained anyway.

You may wish to compare this with SVKStatus and SVKTodo. Additions welcome (please sign with your name like --AutrijusTang). Thanks!

Image removed because it's off-topic. I write this here because I couldn't find a Kwiki change comment inputbox (and hope you don't mind that I'm not logged in).

  • No support or work around for externals support

Design Issues

  • No overlapping checkout path support. this is probably my #1 concern. [#1781]
  • Impossible to "cancel" changes or updates. ("obliterate" in p4, "undo" in bk and tla, "unrecord" in darcs).
  • No per-file comments when doing "svk ci".
  • Also, cannot address file based on its data, like "file#3" in p4 or monotone selectors.
  • No per-mimetype handling for diff and merge tools, eg. "xdelta" support for binary files.
  • svk mirror can't mirror nested cvs modules (eg: tikipro)
  • svk signature is appended after the commit is done. this sucks because you cannot check the signature before accepting the commit on the server side. This also sucks because it leads to complex scripting and race condition on the server side, if you verify signatures.
  • svk mirror can't mirror already mirrored repository (i.e: CVS => svn-mirror => SVK). See SVKAsAProxyForCVSMirror.

Implementation Issues

  • SVN::Mirror is not localised, leading to inconsistent messages. grr.
  • No progress output during long SVN::Mirror actions.
  • svk log command output ordering is stupid if no -r specified --RuslanZakirov
  • svk smerge gets crazy (and leaks) when two mirrors have a common past (forks). (eg: rocklinux and t2)
  • prompt() should check a tty is available, and fail if not
  • When SVK sees an empty merge, it should remember the current rev as the base for the next calculation, instead of recalculating into empty merge again.
  • Autovivification questions (path to mirror to and to copy to) could take sane defaults.
  • The schema not handled message in SVN::Mirror is so wrong. Should at least tell people to install VCP.
  • svk merge -r M:N wcpath1 wcpath2 should work bacause getting the depotpath from wcpath1 is probably quite easy
    • The potential problems here arise when wcpath1 contains local changes.
  • using smerge to put a locally renamed file into a mirrored repository loses the log history of the moved file in the remote repository! (Example: svk rename //local/bla/foo.txt //local/bla/bar.txt; svk smerge //local/bla //mirror/bla -> bar.txt is added (not copied/moved) in the remote repository, losing its revision history ) [#10879]
  • svk is highly insecure, because it does not respect the subversion "do not store password" configuration and does not allow to configure it either.
  • svk signature verification cannot be enabled at all times per path, you've to specify -S. If you forget it it looks bad to have non-signed commits.
  • svk signature isn't auto-checked at synchronisation time. We would need a big "verification failed" when getting the revisions, if it fails.
  • svk blame for a large file is way too slooooooooCTRL-C to be usable. Only 4 minutes so far: PrivoxyWindowOpen("/home/ijjarvin/.svk/zd1211/db/revprops/5", O_RDONLY) = 7, many to go... :-)
  • svk propdel, proplist and probably the other prop-commands claim to support recursive operation with -R, while in reality they don't --BernhardWeisshuhn
  • svk propdel seems hugely inefficent: try find . type f | xargs svk propdel svn:executable on a big checkout and get some coffee. From the shop. In Kenia. --BernhardWeisshuhn
  • changing svn:executable does not change the file permissions on update/switch --BernhardWeisshuhn
  • removing svn:executable from a directory removes execute permissions from that directory, resulting in a wrong error masseage afterwards ("not part of a checkout"). --BernhardWeisshuhn

Misc. Stupidity

  • Help system sucks! Lots of info from this wiki should be moved to PODs of SVK and/or SVK::FAQ.
  • Nonexistent documentations about how to implement SVK::Editor classes.
  • No sensible retronym offered. Suggestions are welcome at SVKMeaning
  • svk can't mirror into dir if dir already exists, even if it's empty. The error message produced at this point tells you to mirror --detach the offending path, but that will not fix the problem - perhaps it should either say detach and remove, or it should check for being attached at least. --CapnCaveman
  • svk cp to an non-existant URL say "transaction out of date" not destination not found - probabally an SVN issue ultimatly --CapnCaveman
  • svk up -sm and svk up -m is not the same if copath is copied but is not mirrored --RuslanZakirov
  • Windows filename globbing applies to all non-option arguments, including property names/values, creating confusing error messages when trying to, for example, svk pe svn:ignore * ..
  • As SVN doesn't support '/' in property names, don't allow setting properties with '/' in their name.
  • Better overall patch management. Could patches just be stored as regular files in some part of the depot (or upstream repository) rather than in some mystical hidden directory? Among other things, that would seem to allow for easier versioning of patches and other sorts of patch management over time. Patches could be easily grouped by project or branch, applied/not-yet-applied, by submitter, etc. --DavidGolden
  • No way (I can find) to manage checkout paths (i.e. delete, move/rename, copy, etc.). Sometimes I just want to copy an already checked-out path (to preserve built binaries, etc.) for a new working copy, but there seems no way for me to tell svk about this. Similarly if I want to delete or move a working copy for some reason. -- RaviNanavati
    • "svk co" has some options to manage checkout paths. However it doesn't seem to support a "copy" operation. --FelixWiemann
  • 'foo', 'foo/a' and 'foo/b' are scheduled for add => `svk ci foo/a` => 'foo/b' is not scheduled any more --RuslanZakirov
  • svk has no support for `svk copy url url` command, which is very usable when you mirror only particular branches from main repo and want to create a branch in the remote repo. You can do it with svn, svn doesn't track merge tickets so the latter is useless :( --RuslanZakirov
  • svk or svn::mirror doesn't mirror info about copy actions well. Consider remote repo with dir X, you have //mirror/X, original author copies X->Y in the remote repo, you mirror Y into //mirror/Y, but svk/svm loose info about copy operation what result in absense of a base in merge operations between //mirror/X and //mirror/Y. --RuslanZakirov
    • also, I think copy action should add merge ticket, for example `svk copy X Y` should add merge ticket UUID:/path/to/X:rev_of_X on the Y path. This would allow to workaround previouse bug. --RuslanZakirov

Mirror Bug

Ok, here is what I found. To test the bug and show it, do the following

  • svk mkdir //wrong
  • svk mkdir //right
  • svk mirror <your svn location> //wrong/codebase
  • svk sync //wrong/codebase
  • svk pg svm:source //wrong/codebase
  • svk pg svm:mirror //
  • svk mv //wrong/codebase //right/codebase
  • svk pg svm:source //right/codebase
  • svk pg svm:mirror //

You'll notice that even though you've moved the location of the mirror, it STILL hasnt updated the property to reflect this. Try this.

  • svk rm //wrong

you'll be told that you cannot remove //wrong because it contains a mirror location ////wrong//codebase

oh, really??

  • svk list //wrong

shows it's empty (if you created it from scratch, it shouldn't have any additional items in it, you'll find the mirror here

  • svk list //right

to fix this situation, you have to do this

  • svk pe svm:mirror //

update the line which shows your mirror, now you can delete the wrong location

  • svk rm //wrong

works properly now.

Hope it helps!!

(note: this wiki wouldnt let me insert / / together as in / /mirror/X, etc, etc, sorry)

-- kosh


Resolved issues moved to SVKSucksLess.