Working offline with the VSIP Client

This forum is now locked, since Gold Support is no longer offered.

Moderator: SourceGear

Locked
GuyH
Posts: 36
Joined: Mon Oct 30, 2006 6:27 am

Working offline with the VSIP Client

Post by GuyH » Thu Dec 13, 2007 4:03 am

I am working in vs2005 with the VSIP client on a solution containing 1 web app project and 4 class library projects.

I did some work on the train home lastnight, and when prompted i chose 'work offline' (as i could not connect to our vault server as i was offline)

I noticed that the solution appeared as if it was not under source control. No icons, no offline checkout notices, nothing.

so when i get into the office today and go back online, the file that i was working on lastnight now appears as renegade.

why is this?

Can i not work offline and have it understand this like the old version?

Now im doing a 'view differences' and i cant even merge my changes into the repository version using diffmerge :?: :roll:

So basically i just got latest from the vault, then sat here and copy pasted each change back into the file after backing up my changed version onto the desktop.

I am losing confidence in this software :(

ian_sg
Posts: 787
Joined: Wed May 04, 2005 10:55 am
Location: SourceGear
Contact:

Post by ian_sg » Thu Dec 13, 2007 8:55 am

Guy,

Renegade simply means "changed but not checked out, and you have checkouts turned on."

Here's what you might have done when you got back to the office to avoid copying and pasting and losing confidence:

1) Check out any renegade files.
1a) Merge if necessary (if someone else checked in a change last night). Vault would do an auto-merge. If there were conflicts that required manual resolution, you'd do them here, with the merge result showing up only in your local working folder.
2) Check in.

A related side note: merges always take place in the working folder. There's no such thing as a "merge into the repository." You do the merge locally, then check in when ready. That's intentional, the idea being that you get the code just right locally before you commit it.

Make sense?
Ian Olsen
SourceGear

GuyH
Posts: 36
Joined: Mon Oct 30, 2006 6:27 am

Post by GuyH » Thu Dec 13, 2007 9:17 am

Yes that makes sense Ian.

But what i find misleading is that vault does not seem to understand that i have modified that file while offline and it needs merging.

I went for automatic merge and it did nothing - the file remained renegade.

So i did a diffmerge and there were my changes. But there was no option to merge them in - the buttons were greyed out.

This obviously relates to the fact that i did not check it out first.

So are you saying i should do the following...

1. when a file appears renegade, check it out.
2. merge my 'offline changes' into the repository version.
3. when happy, check back in

It just seems odd that the functionality for dealing with offline edits is less fluid than the older client.

Apologies if i seem a little negative, its just i can see developers overlooking this 'change in process' and losing the work they did offline.

ian_sg
Posts: 787
Joined: Wed May 04, 2005 10:55 am
Location: SourceGear
Contact:

Post by ian_sg » Thu Dec 13, 2007 9:50 am

The work flow has changed, in part, because the new client also allows for Vault's "CVS mode," in which there are no checkouts. The MSSCCI client is locked into SourceSafe's mode of operation, the new client is not. But your point is taken: new users of the new client don't have a good way of knowing what differences to expect.

More to the point on your specific scenario, you're too focused on needing to merge. The "Renegade" status is exactly what you're asking for: Vault's recognition that the file changed without a checkout. Vault didn't see that the file needed merging because it didn't. A change made offline doesn't necessitate a merge when you go back online.

Here's the possibilities:

No merge (what happened to you):
1) While offline, you make a change to file.cs.
2) You come back online, the file's status is "Renegade."
3) You check out file.cs. Its status is now "Modified."
4) You check in file.cs.

Merge, no conflicts:
1) While offline, you make a change to file.cs.
2) Somebody else commits a change to file.cs.
3) You come back online. The file's status is now "Needs Merge" (not Renegade).
4) You check out file.cs (with the default auto-merge setting). This gets the changes that were committed in step 2 by someone else. The merge happens automatically and the merged contents are in file.cs in your working folder. The file's status is now simply "Modified."
5) You check in file.cs.

Merge with conflicts or auto-merge turned off:
1) While offline, you make a change to file.cs.
2) Somebody else commits a change to file.cs.
3) You come back online. The file's status is now "Needs Merge" (not Renegade).
4) You have auto-merge turned off, or there was a merge conflict that couldn't be automatically resolved. When you check out or get latest, you get a "Could not automatically merge..." message in the output pane.
5) You click "Show Merge" and DiffMerge comes up with 3 panes: your changes on one side, the other developer's changes on the other side, and the merge result in the middle. You perform the merge manually and save the file. The merged contents are in file.cs in your working folder. The file's status is now simply "Modified."
6) You check in file.cs.

Edit: There's no such thing as a "Checked Out" status. The tool tips says "You have this file checked out" but the status in the pending changes pane is "Modified." I've had some coffee now. :)
Ian Olsen
SourceGear

Locked