public bool TryGetValue(string key, out RavenJToken value)
        {
            value = null;
            RavenJToken unsafeVal;

            if (LocalChanges != null && LocalChanges.TryGetValue(key, out unsafeVal))
            {
                if (unsafeVal == DeletedMarker)
                {
                    return(false);
                }

                value = unsafeVal;
                return(true);
            }

            if (parentSnapshot == null || !parentSnapshot.TryGetValue(key, out unsafeVal) || unsafeVal == DeletedMarker)
            {
                return(false);
            }

            value = unsafeVal;

            return(true);
        }
 public FormCheckoutRemoteBranch(string branch, LocalChanges changes)
     : this(branch)
 {
     rbReset.Checked = changes == LocalChanges.Reset;
     rbMerge.Checked = changes == LocalChanges.Merge;
     rbDontChange.Checked = changes == LocalChanges.DontChange;
 }
        public bool Remove(string key)
        {
            if (isSnapshot)
            {
                throw new InvalidOperationException("Cannot modify a snapshot, this is probably a bug");
            }

            count = -1;
            bool        parentHasIt = false;
            RavenJToken token;

            if (!LocalChanges.TryGetValue(key, out token))
            {
                parentHasIt = parentSnapshot == null || !parentSnapshot.TryGetValue(key, out token);
                if (parentHasIt == false)
                {
                    return(false);
                }
            }

            if (token == DeletedMarker)
            {
                return(false);
            }

            if (parentHasIt)
            {
                LocalChanges[key] = DeletedMarker;
            }

            return(LocalChanges.Remove(key));
        }
Exemple #4
0
 public IEnumerator <KeyValuePair <string, RavenJToken> > GetEnumerator()
 {
     if (parentSnapshot != null)
     {
         foreach (var item in parentSnapshot)
         {
             if (item.Key == null)
             {
                 continue;
             }
             if (LocalChanges.ContainsKey(item.Key))
             {
                 continue;
             }
             yield return(item);
         }
     }
     foreach (var localChange in LocalChanges)
     {
         if (localChange.Value == DeletedMarker)
         {
             continue;
         }
         yield return(localChange);
     }
 }
Exemple #5
0
        public bool Remove(string key)
        {
            if (IsSnapshot)
            {
                throw new InvalidOperationException("Cannot modify a snapshot, this is probably a bug");
            }

            RavenJToken parentToken = null;

            bool parentHasIt = parentSnapshot != null &&
                               parentSnapshot.TryGetValue(key, out parentToken);

            RavenJToken token;

            if (LocalChanges.TryGetValue(key, out token) == false)
            {
                if (parentHasIt && parentToken != DeletedMarker)
                {
                    LocalChanges[key] = DeletedMarker;
                    count            -= 1;
                    return(true);
                }
                return(false);
            }
            if (token == DeletedMarker)
            {
                return(false);
            }
            count            -= 1;
            LocalChanges[key] = DeletedMarker;
            return(true);
        }
 public void CopyTo(KeyValuePair <string, RavenJToken>[] array, int arrayIndex)
 {
     if (parentSnapshot != null)
     {
         parentSnapshot.CopyTo(array, arrayIndex);
         arrayIndex += parentSnapshot.Count;
     }
     LocalChanges.CopyTo(array, arrayIndex);
 }
 public static string CheckoutCmd(string branchOrRevisionName, LocalChanges changes)
 {
     string args = "";
     switch (changes)
     {
         case LocalChanges.Merge:
             args = " --merge";
             break;
         case LocalChanges.Reset:
             args = " --force";
             break;
     }
     return string.Format("checkout{0} \"{1}\"", args, branchOrRevisionName);
 }