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

Sparse directories: State of the Onion

From: Karl Fogel <kfogel_at_red-bean.com>
Date: 2007-08-30 18:17:09 CEST

I recently reviewed all the remaining sparse directories stuff. The
quick summary:

For one programmer, it would be about 2-4 weeks of work. Luckily,
it's very parallelizeable, so as long as we coordinate, we can
systematically mop this stuff up. Also, some things can maybe be
deferred to after 1.5; not everything on the list is a showstopper.

The detailed version:

Here's a rundown on all the issues. (I'm currently finishing #2882
['make commit --depth work'], and intend to spend some parallel time
on #2846. I'll start on #2844 right after that, which overlaps with
some of the other issues.)

Please post if there's anything important not on this list:

* Issue #2845 "Tweak API's to handle svn_depth_unknown"
  APIs in question: svn_client_diff4(), svn_client_diff_summarize2(),
      svn_client_diff_summarize_peg2(), svn_client_diff_peg3()

  In the issue just now, I wrote the following:

  "I agree that ideally this change would be made. However, we should
  test to see if diff behaves acceptably with combinations of depthy
  working copies and the --depth option already. If it is, then this
  issue can and should be deferred, as it is not an API issue in the
  formal (compatibility) sense."

  STATUS: 3/5 days, but maybe deferrable, see above.

* Issue #2882 "make 'svn commit --depth' work"

  STATUS: 1/2 days (almost done, I'm working on it, issue reflects this)

* Issue #2843 "Create interface for removing stuff from working copy"

  STATUS: Not started. How hard? Not sure, but minimum 3/5 days I
          think. However, this may be deferrable from 1.5; it's not a
          showstopper to ship without it, just less than ideal.

* Issue #2847 "Some API's still take recurse booleans instead of depth"

  STATUS: Probably 2/3 days. But deferrable if absolutely necessary;
          not all these APIs necessarily need to be changed in 1.5,
          although it would be good to get as many as we can. (I have
          said so in the issue.)

* Issue #2846 "Tests needed for some subcommands"

  STATUS: 1/2 days? Senthil is already doing this, and asking for
          others to review his plans. I'll do so, Senthil, sorry for
          the delay (on an airplane and therefore offline yesterday).

* Issue #2842 "deal with unwanted data sent from older servers"
  Only perf issues left (ra_serf could omit fetches of unwanted data).

  STATUS: Nice to have, but could be deferred to after 1.5 if necessary.
          (Said so in the issue just now.)

* Issue #2864 "Cannot commit directory deletions non-recursively"

  STATUS: Deferrable. This may come out "in the wash" of sparse-dirs
          changes anyway, but if it's still present, it can be
          deferred -- it is an irritation, but not a 1.5 showstopper.

* Issue #2844 "Review all TODO(sd) comments in codebase"

  STATUS: 5/10 days to handle all remaining, see details below. Note
          that this issue overlaps with some of the ones above, naturally.

  Here are details on all the "TODO(sd)" comments remaining after
  r26390 and r26391. I've put this list into the issue, too.

  HARD:
    - svn_client_update3: depth-immediates should update the presence or
        absence of subdirs. But does it?
    - svn_client_switch2: depth-immediates behavior may not be
        implemented yet. May be related to above.
    - libsvn_client/commit.c/svn_client_commit4(): Issue #2882 in
         progress. Note there are two comments here; the second is easy.
    - libsvn_client/externals.c/svn_client__do_external_status(): Is
         unconditional recursion of svn_client_status3() really
         correct? Probably not, because then we might recurse farther
         into an external subdir than the user requested.

  MEDIUM:
    - svn_wc_get_update_editor3: verify that doc string claims are true
    - svn_wc_get_diff_editor4: figure out what doc string means, clarify
    - svn_client_merge3: doc string clarification, also needs testing
  
  MEDIUM BUT POSSIBLY DEFERRABLE:
    - svn_client_add4: should take a depth argument.
        See also svn_wc_add2() comment below.
    - libsvn_wc/adm_ops.c/svn_wc_add2(): Just acknowledging above.
    - svn_client_import3: maybe take depth instead of nonrecursive?
    - svn_client_revert: maybe take depth? Also, has someone started
        this already?
    - svn_client_resolved2: maybe take depth?
    - svn_client_propset3: maybe take depth?
    - svn_client_propget3: maybe take depth? (Very likely deferrable?)
    - svn_client_info: maybe take depth? (Also likely deferrable?)
        ### I'd hoped that the above svn_client_revert(),
        ### svn_client_resolved2(), svn_client_propset3(),
        ### svn_client_propget3(), and svn_client_info() would all
        ### share a generic recursion framework. It turns out that
        ### only resolved2, propset3, and propget3 share one, though:
        ### the svn_wc_walk_entries3() mechanism. But adding depth
        ### support to that will probably still save some some time
        ### and code duplication, at least for them.
    - libsvn_client/diff.c:diff_repos_repos(): Hmm, do we even implement
        depth for repos->repos diffs? It would be nice if we did, but
        this may be deferrable.
    - libsvn_client/diff.c:diff_summarize_repos_repos(): same as above
  
  EASY:
    - svn_repos_dir_delta2: doc string
    - svn_wc_adm_open3: doc string and var name change
    - svn_wc_crawl_revisions2: doc string
    - svn_ra_do_update2: just test that depth works as documented.
    - svn_ra_do_switch2: same.
    - svn_ra_do_status2: same.
    - svn_ra_do_diff3: same.
    - libsvn_wc/diff.c:make_editor_baton(): document
    - libsvn_wc/status.c:close_directory(): verify that it can't happen
                                            ### Do right after this.
    - libsvn_ra_neon/fetch.c:make_reporter(): doc string
  
  EASY AND POSSIBLY DEFERRABLE:
    - svn_client_diff4: in depth-immediates case, diff subdir props?
  
  MYSTERIOUS:
    - libsvn_repos/delta.c:delta_dirs(): Three identical comments about
         possible future need for trinary conditional. Ask on list
         about this.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Aug 30 18:14:19 2007

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