emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: State of VC?


From: Dan Nicolaescu
Subject: Re: State of VC?
Date: Tue, 22 Jan 2008 14:07:53 -0800

Tom Tromey <address@hidden> writes:

  > >>>>> "Eric" == Eric S Raymond <address@hidden> writes:
  > 
  > Eric> I have time to work on VC and consider myself responsible for it
  > Eric> (especially since the new-VC rewrite).  But I am unclear on what needs
  > Eric> to be done with VC at this point.
  > 
  > There are a few bug reports, some with patches, that were never looked
  > at.  Reviewing those would be a good start.

Pointers? 
I only remember one bug:
http://permalink.gmane.org/gmane.emacs.devel/87064

  > Eric> Would those of you who have been hacking please summarize the
  > Eric> design and coding issues as you see them?  From that I will try
  > Eric> to put together some sort of roadmap and get a start on
  > Eric> executing it.

Most code discussion has been about vc-status.

By this time I think that we can declare the vc-status experiment a
success. It is in decent shape and the code is still very simple and
understandable.  Do you agree?

I added a TODO list to vc.el, and I have some additions to that list in
my uncommitted tree.  IMO this list can be used as a start for a
roadmap. Here's the list:

;; - Make vc-checkin avoid reverting the buffer if has not changed
;;   after the checkin.  Comparing (md5 BUFFER) to (md5 FILE) should
;;   be enough.
;;
;; - vc-update/vc-merge should deal with VC systems that don't
;;   update/merge on a file basis, but on a whole repository basis.
;;
;; - vc-register should register multiple files at a time. The
;;  `register' backend function already supports that.
;;
;; - the backend sometimes knows when a file it opens has been marked
;;   by the VCS as having a "conflict". Find a way to pass this info -
;;   to VC so that it can turn on smerge-mode when opening such a
;;   file.
;;
;; - the *VC-log* buffer needs font-locking.
;;
;; - make it easier to write logs, maybe C-x 4 a should add to the log
;;   buffer if there's one instead of the ChangeLog.
;;
;; - make vc-state for all backends return 'unregistered instead of
;;   nil for unregistered files, then update vc-next-action.
;;
;; - add a generic mechanism for remembering the current branch names,
;;   display the branch name in the mode-line. Replace
;;   vc-cvs-sticky-tag with that.
;; 
;; - vc-register should register a fileset at a time. The backends
;;   already support this, only the front-end needs to be change to
;;   handle multiple files at a time.
;;
;; - deal with push/pull operations.
;;
;; - decide if vc-status should replace vc-dired.
;;
;; - vc-status needs a menu, mouse bindings and some color bling.
;;
;; - "snapshots" should be renamed to "branches", and thoroughly
;;   reworked.
;;

Now, onto Tom's list:

  > This is my list for vc-status.  It is roughly in order from core
  > pieces to UI.
  > 
  > * Make a new 'update' back end function to update the tree.
  > 
  > * Make dir-status back end function update the vc-status buffer
  >   asynchronously.  This means using a process filter.

I am not yet convinced that we should do this. The discussion on this
was started by your observation that PCL-CVS and psvn "pause" when
updating the display. It would be good to actually investigate and see
what the cause of the "pause" is, and make sure that it can be fixed by
going asynchronous. 

Anyway, updating asynchronously is not a big change from the vc.el point
of view. Just a few lines need to change. The backends would have to
change more stuff to use process filters. But that should not be too
hard either once there a working model.

  > * Don't clear vc-status buffer when updating.  This means figuring out
  >   how to insert new items into the ewoc at the right point.

We don't need to do this right away an easy stopgap: we can keep a list
of selected items and select them at the time they are inserted.

  > * Figure out what to do about 'conflict' -- seems like it should be a
  >   state, but none of VC seems prepared for that.  There was some
  >   discussion about this.
  > 
  > * Add more bindings.  At least 'commit' and 'update' are needed.
  >   In general, copy stuff from pcl-cvs or psvn.
  >   We also need a menu and maybe a toolbar.
  >
  > * Implement dir-status and update functions for all back ends.
  >
  > * A few rough edges... allow multiple vc-status buffers.  Decide
  >   general approach to running the sub-process (what buffer to use,
  >   etc; there was some traffic about this).  Decide how to allow
  >   interrupting the process.  Update the vc-status buffer when a
  >   modification is made to a buffer visiting one of the listed files.

Agreed.

  > * Whatever else that pcl-cvs does that is cool that vc-status should
  >   have.

One such cool thing is: when a files is modified and its directory is
shown in a vc-status buffer, add it there. 

  > FWIW I am hardly working on this.  I send a patch as the mood
  > strikes.  So, don't worry too much about duplicating effort :).
  > Dan, I think, is leading it.

Hehe, hardly. I don't really have time to lead this properly, so the job
is up for grabs :-)


      --dan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]