On Jan 31, 2014, at 10:26 AM, Evan Huus <eapa...@gmail.com> wrote:

> On Fri, Jan 31, 2014 at 12:44 PM, Guy Harris <g...@alum.mit.edu> wrote:
>> 
>> On Jan 31, 2014, at 2:22 AM, Roland Knall <rkn...@gmail.com> wrote:
>> 
>>> But one clarification. You do not check-out a project with git. This
>>> is a misconception. You clone the complete repository of wireshark
>>> into a local copy.
>> 
>> Unfortunately, yes, that's what happens, imposing a requirement to push 
>> changes after they're committed, and adding an extra step to my workflow 
>> with no obvious benefit either to me or to the project.
>> 
>> I have, occasionally, been tempted to see whether I could do my own set of 
>> porcelain that allows me to completely ignore the "you have your own 
>> separate repository" stuff, with a more CVS/SVN-like model, where
>> 
>>        1) there's an "update" operation that grabs from the master changes 
>> made since the last time a checkout or update was done, attempts to merge 
>> them into the files you have modified, and keeps track of the ones where 
>> there was a merge conflict;
> 
> "git pull"

...which refuses to do the pull if there are any files differing from the 
checked-in versions, so, for me, the operation is actually

        git stash; git pull; git stash apply

which is in ~/bin/git-update so I can just do "git update".

>>        2) there's a "commit" operation that sends your changes to the master;
> 
> "git pull && git commit -a && git push"
> 
> with the caveat that the push should be to gerrit, not straight to master

(The caveat being, of course, Wireshark-specific; it's not the only project 
using Git with which I'm involved.

And the caveat needs to be automated in some fashion, whether it's a 
~/bin/git-checkin script that does all of the above or a way to configure Git 
so that pulls come from the master and pushes go to Gerrit.

And the "git pull" would, of course, have to be replaced by "git stash; git 
pull; git stash apply", as per the above.)

>>        3) changes are either committed to the master or they're not - 
>> there's no notion of adding a file that's already in the repository to a 
>> change set, and the "diff" operation shows the difference between all your 
>> changes and the master.
> 
> As long as you use "git commit -a" this is basically already true
> (with the exception adding new files or removing old files from the
> repo).

...and as long as Git doesn't commit anything itself as a result of any of the 
aforementioned operations.

> The ability to manage many small changes is a motivator for the
> branching design, though this is perhaps less obvious. Consider a
> situation where you may have several changes under development/review
> at once, on a large project like the kernel (or Wireshark, for that
> matter). In SVN you would probably just have a separate working dir
> for each. Pros are extremely fast switching between environments (just
> a 'cd' and you're done). Cons are disk space usage,

Not a *huge* problem for me, personally.  (Most of the disk space on my laptop 
is, I think, taken up by a pile of virtual machines.)

> and it is
> expensive to set up another change (since it requires copying/building
> the whole project, which is slow).

Not too painful on my machine, either.

> The other option is to keep all changes in one working directory and
> let users switch between them. Pros are much-reduced disk space, and
> near-instantaneous creation/deletion of branches. The con is that it
> takes slightly longer to switch branches since doing so requires a
> partial rebuild. However when the branches are closely related the
> rebuild cost is usually a tiny fraction of the cost to rebuild the
> whole project.

The other con is that it's the moral equivalent of tabbed browsing, which I, at 
least, *really hate*, as it keeps a bunch of unrelated things in the same 
space.  (As per an earlier comment of mine, if Safari had an option to prevent 
it from even accidentally creating a tab, I would enable it in a heartbeat.)

And does that work if your work is not committed until it's time to push to the 
official repository?  If not, it's another case of Git strongly pushing a 
particular workflow....

> If you only ever work on one change at a time in a given working directory, 
> and
> you always push that change before starting another one, then there's
> no reason to use branches.

That's exactly my workflow, so there's no reason for me to use branches.

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to